sql >> Base de Datos >  >> RDS >> Mysql

Unión de tablas con claves foráneas

Suponiendo que desea simplemente unir todo como sugieren las teclas...

SELECT *
FROM table1
INNER JOIN table3 on table3.table1ID = table1.table1ID
INNER JOIN MEM_INSTR on MEM_INSTR.table2ID = table3.table2ID

Pero digamos que tienes este escenario.

CREATE TABLE Table1 (
    Table1ID NUMBER, 
    Generation NUMBER, 
    ... 
);

CREATE TABLE Table2 (
    Table2ID NUMBER, 
    Table1ID NUMBER, 
    Table1Generation NUMBER, 
    ...
);

Digamos por el bien del argumento que Table1 puede tener múltiples registros con el mismo Table1ID, y Generation se usa como clave secundaria. Y debe unir un registro de Table2 al sencillo correcto Registro de la tabla 1. Puede expandir el ON cláusula de la misma manera que expandiría un WHERE cláusula.

SELECT *
FROM table1 t1
INNER JOIN table2 t2 
    ON t2.table1id = t1.table1id 
    AND t2.table1generation = t1.generation