sql - SELECT query on multiple tables -


मेरे पास दो टेबल हैं, foo और बार :

<पूर्व> + ---- + ----- + + ---- + ----- + | आईडी | वैल | | आईडी | वैल | + ---- + ----- + +---- + ----- + | 1 | Qwe | | | 1 | एडी | | 2 | आरटीआई | | 3 | फग | + ---- + ----- + + ---- + ----- +

आईडी यहां अद्वितीय नहीं है फ़ू में सभी आईडी नहीं है, इसके पास बार और इसके विपरीत में समानता है। मुझे दोनों तालिकाओं में विशिष्ट आईडी के साथ सभी पंक्तियों की गणना करने और उन्हें एक नई तालिका में प्रस्तुत करने की आवश्यकता है, उदाहरण के लिए:

  + ---- + ----------- + ----------- + | आईडी | Count_foo | Count_bar | + ---- + ----------- + ----------- + | 1 | 1 | 1 | | 2 | 1 | 0 | | 3 | 0 | 1 | + ---- + ----------- + ----------- +  

मैंने कोशिश की है यूनियन का चयन करें :

  SELECT id, COUNT (id) एएस count_foo, 0 as count_bar foo ग्रुप से आईडी यूनियन का चयन आईडी, 0, आईडी (आईडी) आईडी से बार ग्रुप से;  

लेकिन यह आउटपुट आईडी = 1 के साथ दो बार, जैसा

  + ---- + ----- ------ + ----------- + | आईडी | Count_foo | Count_bar | + ---- + ----------- + ----------- + | 1 | 1 | 0 | & Lt; - अच्छा नहीं | 2 | 1 | 0 | | 1 | 0 | 1 | & Lt; - अच्छा नहीं | 3 | 0 | 1 | + ---- + ----------- + ----------- +  

मैंने भी LEFT की कोशिश की है जोड़ :

  SELECT id, COUNT (foo.id) AS count_foo, COUNT (bar.id) एएस count_bar Foo LEFT JOIN बार से आईडी का उपयोग कर (आईडी) ग्रुप;  

लेकिन यह क्वेरी तालिका बार से उन पंक्तियों को अनदेखा कर देती है जो तालिका foo में अनुपलब्ध है:

 < कोड> + ---- + ----------- + ----------- + | आईडी | Count_foo | Count_bar | + ---- + ----------- + ----------- + | 1 | 1 | 1 | | 2 | 1 | 0 | + ---- + ----------- + ----------- + & lt; - क्या मैं `आईडी = 3` कर सकता हूँ?  

मुझे क्या याद आ रहा है? पढ़ने के लिए सही प्रश्न या सही मैनुअल क्या होगा?

धन्यवाद।

आप निम्न की कोशिश कर सकते हैं:

  SELECT d.id, (SELECT COUNT (*) foo WHERE id = d.id से) count_foo, (SELECT COUNT (*) बार से WHERE Id = d.id) count_bar FROM ((SELECT id FROM foo) यूनियन (SELECT id FROM बार)) d;  

टेस्ट केस:

  बनाओ टेबल फ़ू (id int, val varchar (5)); टेबल बार बनाएं (id int, val varchar (5)); फू वैल्यू में प्रवेश करें (1, 'qwe'); फू वैल्यू (2, 'आरटीआई') में सम्मिलित करें; बार मूल्यों में प्रविष्ट करें (1, 'एएसएफ'); बार मूल्यों में डालें (3, 'जीजे');  

परिणाम:

  + ------ + ----------- + ------- ---- + | आईडी | Count_foo | Count_bar | + ------ + ----------- + ----------- + | 1 | 1 | 1 | | 2 | 1 | 0 | | 3 | 0 | 1 | + ------ + ----------- + ----------- + 3 पंक्तियां सेट (0.00 सेकंड)  

Comments

Popular posts from this blog

c# - sqlDecimal to decimal clr stored procedure Unable to cast object of type 'System.Data.SqlTypes.SqlDecimal' to type 'System.IConvertible' -

Calling GetGUIThreadInfo from Outlook VBA -

Obfuscating Python code? -