Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment référencer une table parent dans une jointure multi-table ?

Les résultats que vous obtenez sont attendus. Vous devriez avoir un identifiant différent pour C++ et cela conduirait aux résultats souhaités.

Vous devez ajouter une colonne ID dans le B table que vous utiliseriez dans le C table (comme une clé étrangère) afin que vous puissiez filtrer les résultats.

La résolution de ce problème de conception de base de données vous aidera à résoudre ce problème car votre conception actuelle est défectueuse.

La requête résultante devrait ressembler à :

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;

Aussi, je recommanderais d'utiliser IDENTITY id colonnes qui s'incrémentent automatiquement afin que vous ne rencontriez pas de problèmes d'intégrité.