बाईं ओर दो तालिकाओं में एक स्थिति के साथ शामिल हों
यह आमतौर पर गलत है एक LEFT [OUTER] JOIN
का उपयोग करने के लिए और फिर WHERE
. के साथ फ़िल्टर करें स्थिति, जिससे LEFT JOIN
. की विशेष सुविधा समाप्त हो जाती है बाईं तालिका से सभी पंक्तियों को शामिल करने के लिए बिना शर्त . विस्तृत विवरण:
- जॉइन बनाम लेफ्ट जॉइन और WHERE कंडीशन परफॉर्मेंस सुझाव को अधिक विस्तार से समझाएं
सभी पंक्तियों को फ़िल्टर करने वाली शर्तों को WHERE
. में रखें खंड (rid = 2
), लेकिन record_table
. से पंक्तियों को बाईं ओर जोड़ने के लिए शर्तें बनाएं वास्तव में शामिल होने की शर्तें:
SELECT t.start_date, t.end_date -- adding those
, r.id, r.name, r.date
FROM time_table t
LEFT JOIN record_table r ON r.date >= t.start_date
AND r.date < t.end_date
WHERE t.rid = 2;
जैसा कि टिप्पणी की गई है, time_table
. से कॉलम शामिल करना समझ में आता है परिणाम में, लेकिन यह मेरा वैकल्पिक जोड़ है।
आपको निचली और ऊपरी सीमा . के बारे में भी स्पष्ट होना चाहिए . सामान्य परंपरा शामिल . है निचला और बहिष्कृत करें समय में ऊपरी सीमा (timestamp
) पर्वतमाला। इसलिए मेरा उपयोग >=
और <
ऊपर।
संबंधित:
- औसत की गणना करने के लिए एक समय श्रृंखला पर SQL क्वेरी
- 5 मिनट की अवधि के आधार पर समूहीकृत रिकॉर्ड का औसत चुनना
प्रदर्शन कोई समस्या नहीं be होना चाहिए सही अनुक्रमणिका के साथ। आपको time_table(rid)
पर एक अनुक्रमणिका (या PK) चाहिए और दूसरा record_table(date)
. पर ।