Die Ergebnisse, die Sie erhalten, werden erwartet. Sie sollten eine andere ID für C++ haben und das würde zu den gewünschten Ergebnissen führen.
Sie müssen eine ID-Spalte in B
hinzufügen Tabelle, die Sie in C
verwenden würden Tabelle (als Fremdschlüssel), damit Sie die Ergebnisse filtern können.
Das Beheben dieses Datenbankdesignproblems hilft Ihnen, dieses Problem zu lösen, da Ihr aktuelles Design fehlerhaft ist.
Die resultierende Abfrage sollte wie folgt aussehen:
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;
Außerdem würde ich die Verwendung von IDENTITY
empfehlen id-Spalten, die automatisch hochgezählt werden, damit Sie nicht auf Integritätsprobleme stoßen.