Резултатите, които получавате, са очаквани. Трябва да имате различен идентификатор за C++ и това ще доведе до желаните от вас резултати.
Трябва да добавите колона и ID в B
таблица, която бихте използвали в C
таблица (като външен ключ), за да можете да филтрирате резултатите.
Коригирането на този проблем с дизайна на базата данни ще ви помогне да разрешите този проблем, тъй като текущият ви дизайн е дефектен.
Получената заявка трябва да изглежда така:
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;
Също така бих препоръчал да използвате IDENTITY
id колони, които се увеличават автоматично, така че да не се сблъскате с проблеми с целостта.