Hasil yang Anda dapatkan diharapkan. Anda harus memiliki id yang berbeda untuk C++ dan itu akan menghasilkan hasil yang Anda inginkan.
Anda perlu menambahkan dan kolom ID di B
tabel yang akan Anda gunakan di C
tabel (sebagai kunci asing) sehingga Anda dapat memfilter hasilnya.
Memperbaiki masalah desain database ini akan membantu Anda memecahkan masalah ini karena desain Anda saat ini cacat.
Kueri yang dihasilkan akan terlihat seperti :
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;
Juga, saya akan merekomendasikan menggunakan IDENTITY
kolom id yang bertambah secara otomatis sehingga Anda tidak mengalami masalah integritas.