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 original
SELECT __(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 original
SELECT __(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 original
SELECT 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 original
SELECT 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.