आपको मिलने वाले परिणाम अपेक्षित हैं। आपके पास C++ के लिए एक अलग आईडी होनी चाहिए और इससे आपको मनचाहा परिणाम मिलेगा।
आपको 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 कॉलम जो स्वचालित रूप से बढ़ते हैं ताकि आप अखंडता समस्याओं में भाग न लें।