De resultaten die u krijgt, worden verwacht. Je zou een ander ID voor C++ moeten hebben en dat zou tot de gewenste resultaten leiden.
U moet een kolom ID toevoegen in de B
tabel die u zou gebruiken in de C
tabel (als een externe sleutel) zodat u de resultaten kunt filteren.
Door dit probleem met het databaseontwerp op te lossen, kunt u dit probleem oplossen, aangezien uw huidige ontwerp gebrekkig is.
De resulterende zoekopdracht zou er als volgt uit moeten zien:
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;
Ik zou ook aanraden om IDENTITY
. te gebruiken id-kolommen die automatisch worden verhoogd, zodat u niet tegen integriteitsproblemen aanloopt.