De resultater, du får, forventes. Du bør have et andet id til C++, og det ville føre til de ønskede resultater.
Du skal tilføje og ID-kolonnen i B
tabel, som du ville bruge i C
tabel (som en fremmednøgle), så du kan filtrere resultaterne.
Løsning af dette databasedesignproblem vil hjælpe dig med at løse dette problem, da dit nuværende design er mangelfuldt.
Den resulterende forespørgsel skal se sådan ud:
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;
Jeg vil også anbefale at bruge IDENTITY
id-kolonner, der øges automatisk, så du ikke løber ind i integritetsproblemer.