Kết quả bạn nhận được là mong đợi. Bạn nên có một id khác cho C ++ và điều đó sẽ dẫn đến kết quả bạn muốn.
Bạn cần thêm và cột ID trong B
bảng mà bạn sẽ sử dụng trong C
bảng (làm khóa ngoại) để bạn có thể lọc kết quả.
Khắc phục sự cố thiết kế cơ sở dữ liệu này sẽ giúp bạn giải quyết vấn đề này vì thiết kế hiện tại của bạn có sai sót.
Truy vấn kết quả sẽ giống như sau:
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;
Ngoài ra, tôi khuyên bạn nên sử dụng IDENTITY
các cột id tự động tăng lên để bạn không gặp phải các vấn đề về tính toàn vẹn.