Mysql
 sql >> Database >  >> RDS >> Mysql

Come faccio a fare riferimento alla tabella padre in un join multitabella?

I risultati che ottieni sono attesi. Dovresti avere un ID diverso per C++ e questo porterebbe ai risultati desiderati.

Devi aggiungere una colonna ID nel B tabella che useresti nella C tabella (come chiave esterna) in modo da poter filtrare i risultati.

Risolvere questo problema di progettazione del database ti aiuterà a risolvere questo problema poiché il tuo design attuale è difettoso.

La query risultante dovrebbe essere simile a :

SELECT *
FROM A
   LEFT OUTER JOIN B ON A.id = B.pid
   LEFT OUTER JOIN C ON A.id = B.pid AND C.newForeignKeyId=B.newId;

Inoltre, consiglierei di utilizzare IDENTITY colonne id che si incrementano automaticamente in modo da non incorrere in problemi di integrità.