Buenas...esto es supuestamente un aporte aunque se que es una bobada para muchos pero a mi me costo mucho entenderlo y la verdad hubiera querido ver algo como lo que expongo en algun tutorial.
La idea de los INNER JOINs es poder acceder a campos de una tabla Z relacionada con una tabla X, posiblemente tambien teniendo que pasar por una tercera (o hasta 4ta o...n-esima) tabla relacionada Y.
X---Y----Z
Casi siempre se relacionan por IDs ... asi que digamos que X son compradores, Y son mercaderias y Z son proveedores, como se puede pensar... debo poder conocer el proveedor de un producto que compro un comprador ante una reclamacion (por ejemplo). Por supuesto cada comprador tiene su ID (podria ser su DNI), cada producto su ID_producto y cada proveedor su ID_proveedor.
En general seria algo asi....
Código SQL:
Ver originalSELECT __(campos)___ FROM ___(tabla1)___
INNER JOIN _(tabla2)____
ON (id_tabla1=id_tabla2)
WHERE condiciones_para_cualquier_campo_de_cualquier_tabla
o para 3 tablas (como en el mini-ejemplo)
Código SQL:
Ver originalSELECT __(campos)___ FROM ___(tabla1)___
INNER JOIN _(tabla2)____
ON (id_tabla1=id_tabla2)
INNER JOIN _(tabla3)_ ON
(id_tabla2=id_tabla3)
WHERE condiciones_para_cualquier_campo_de_cualquier_tabla
donde las condiciones WHERE o cualquier LIMIT va al final y son opcionales.
Asi se puede hacer PERFECTAMENTE pero es mucho mas facil de seguir y evitar confundirse si usamos "alias" para los nombres de las tablas:
o... para 3 tablas
Código SQL:
Ver originalSELECT t1.* FROM TTTT AS t1
INNER JOIN TTTT AS t2 ON
t1.id_ = t2.id_
INNER JOIN TTTT AS t3 ON
t2.id_ = t3.id_
y... para 4 ...
Código SQL:
Ver originalSELECT t1.* FROM TTTT AS t1
INNER JOIN TTTT AS t2 ON
t1.id_ = t2.id_
INNER JOIN TTTT AS t3 ON
t2.id_ = t3.id_
INNER JOIN TTTT AS t4 ON
t3.id_ = t4.id_
Donde TTTT son los nombres de las distintas tablas. Puede verse como este tipo de estructura es totalmente predecible y se puede generar facilmente en cualquier ORM.
Saludos! y no se enojen los que saben.