एसक्यूएल क्वेरी अपेक्षित के रूप में प्रदर्शित नहीं कर रहा है

मैं यह पता लगाने की कोशिश कर रहा हूं कि ग्राहकों ने दो टेबल ग्राहक और लेनदेन में शामिल होने से कोई लेनदेन नहीं किया है। हालांकि, मुझे अपनी क्वेरी के साथ कोई मूल्य वापस नहीं मिला है।

SELECT
[CUST].[CustID],
[CUST].[CustName]
FROM [Cust]
INNER JOIN [TRANS]
ON [CUST].[CustID] = [TRANS].[CustID]
WHERE [CUST].[CustID] != [TRANS].[CustID]
0

2 उत्तर

आप जो कर रहे हैं वह वही है:

SELECT [CUST].[CustID],
       [CUST].[CustName]
FROM [Cust]
INNER JOIN [TRANS]
    ON [CUST].[CustID] = [TRANS].[CustID] AND [CUST].[CustID] != [TRANS].[CustID]

यह स्पष्ट रूप से कभी नहीं होगा, इसलिए परिणाम कोई पंक्तियों के साथ नहीं होगा।

बिना लेनदेन वाले ग्राहकों को प्राप्त करने के लिए आपको यह करना चाहिए:

SELECT [CUST].[CustID],
       [CUST].[CustName]
FROM [Cust]
WHERE NOT EXISTS (SELECT 1 
                  FROM [TRANS]
                  WHERE [CUST].[CustID] = [TRANS].[CustID]
                 )         
0
जोड़ा

आप शामिल हो रहे हैं

[CUST].[CustID] = [TRANS].[CustID]

लेकिन जहां खंड कहता है

[CUST].[CustID] != [TRANS].[CustID]

यदि आप बिना लेनदेन वाले परिधानियों की सूची चाहते हैं तो आपको LEFT JOIN का उपयोग करना चाहिए:

SELECT
[CUST].[CustID],
[CUST].[CustName]
FROM [Cust]
LEFT JOIN [TRANS]
ON [CUST].[CustID] = [TRANS].[CustID]
WHERE [TRANS].[CustID] is null
0
जोड़ा