PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

पोस्टग्रेज लेफ्ट जॉइन विथ व्हेयर कंडीशन

<ब्लॉकक्वॉट>

बाईं ओर दो तालिकाओं में एक स्थिति के साथ शामिल हों

यह आमतौर पर गलत है एक 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) . पर ।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL में एक स्ट्रिंग को एक तिथि में कैसे बदलें

  2. PostgreSQL:कमांड लाइन से पैरामीटर कैसे पास करें?

  3. कर्सर.execute(im_entry.test (+entrym+) VALUES ('+p+');)

  4. PostgreSQL में व्यू कैसे बनाएं

  5. Django cache.set () डुप्लिकेट कुंजी त्रुटि उत्पन्न कर रहा है