से कम पंक्तियों में परिणामों में शामिल होने के बावजूद मैं SQL सर्वर का उपयोग कर रहा हूं (मुझे विश्वास है कि यह 2005 है)।एसक्यूएल सर्वर: बाएं तालिका
मेरे पास TableA
है जिसमें 2 कॉलम और 43 9 पंक्तियां हैं (प्रत्येक पंक्ति अद्वितीय है)।
+----------+
|ID | Name |
+----------+
मैं TableB
कि 35 कॉलम और हजार पंक्तियों के कई सैकड़ों (प्रत्येक पंक्ति भी अद्वितीय है) है।
+------------------------------------------------------------------------------+
|Date | ID | Name | Blah1 | Blah2 | ... | Hour1 | Hour2 | Hour3 | ... | Hour24 |
+------------------------------------------------------------------------------+
TableB
में प्रत्येक पंक्ति में प्रति घंटा अवलोकन और कुछ अन्य घर की जानकारी है। अब परीक्षण उद्देश्यों के लिए मुझे केवल आज की तारीख में दिलचस्पी है I.e 4/19/2013।
अगर मैं कार्य करें:
Select count(*)
from TableB
where Date = '4/19/2013 12:00:00 AM'
मैं 10526 है, जो सही है के रूप में वहाँ 10526 अलग स्थानों जिसके लिए वहाँ है प्रति घंटा अवलोकन डेटा प्रत्येक दिन कर रहे हैं मिलता है।
मैं टेबल ए और टेबलबी on a.id = b.id
में शामिल होना चाहता हूं, जिसके परिणामस्वरूप 43 9 पंक्तियां होंगी।
दुर्भाग्यवश, परिणाम 246 पंक्तियां हैं। यह कैसे हो सकता है? LEFT JOIN
TableA
में सभी पंक्तियों को वापस करने का मानना है कि TableB
में कोई मिलान था या नहीं?
* संपादित *
पूरा क्वेरी मैं इस्तेमाल किया था:
select *
from TableA as a
left join TableB as b on a.id = b.id
where RealDate = '4/20/2013 12:00:00 AM'
क्या आप – PSR
@PSR का उपयोग करने वाली पूरी क्वेरी दिखा सकते हैं - मैंने मूल क्वेरी को शामिल करने के लिए अपनी मूल पोस्ट संपादित की है। – codingknob
पुन: वाक्यांश @LoztInSpace मूल्यवान टिप्पणी: जॉइन से पहले चयन तालिकाओं में बाधाएं जोड़ें (WHERE का उपयोग करें)। अन्यथा, ये बाधाएं जुड़ने के परिणामी आउटपुट पर कार्य करती हैं (और पंक्तियों को मूल सारणी से भी कम तक कम कर सकती हैं)। –