Wyniki, które otrzymasz, są oczekiwane. Powinieneś mieć inny identyfikator dla C++, a to doprowadziłoby do pożądanych rezultatów.
Musisz dodać i ID kolumnę w B
tabela, której użyjesz w C
tabeli (jako klucz obcy), aby można było filtrować wyniki.
Naprawienie tego problemu z projektem bazy danych pomoże Ci rozwiązać ten problem, ponieważ Twój obecny projekt jest wadliwy.
Wynikowe zapytanie powinno wyglądać tak:
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;
Polecam również użycie IDENTITY
Kolumny id, które zwiększają się automatycznie, aby nie napotkać problemów z integralnością.