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

एक क्वेरी में एकाधिक टेबल पर एकाधिक बाएं जुड़ते हैं

इस तरह की क्वेरी को काम करना चाहिए - स्पष्ट JOIN . के साथ फिर से लिखने के बाद वाक्य रचना:

SELECT something
FROM   master      parent
JOIN   master      child ON child.parent_id = parent.id
LEFT   JOIN second parentdata ON parentdata.id = parent.secondary_id
LEFT   JOIN second childdata ON childdata.id = child.secondary_id
WHERE  parent.parent_id = 'rootID'

यहां ट्रिपिंग वायर यह है कि एक स्पष्ट JOIN "पुरानी शैली" से पहले बांधता है CROSS JOIN अल्पविराम के साथ (, ) मैं यहां मैनुअल को उद्धृत करता हूं:

पहले को फिर से लिखने के बाद, सभी जॉइन को बाएं से दाएं लागू किया जाता है (तार्किक रूप से - पोस्टग्रेज क्वेरी प्लान में तालिकाओं को पुनर्व्यवस्थित करने के लिए स्वतंत्र है) और यह काम करता है।

बस अपनी बात कहने के लिए, यह भी काम करेगा:

SELECT something
FROM   master parent
LEFT   JOIN second parentdata ON parentdata.id = parent.secondary_id
,      master child
LEFT   JOIN second childdata ON childdata.id = child.secondary_id
WHERE  child.parent_id = parent.id
AND    parent.parent_id = 'rootID'

लेकिन स्पष्ट JOIN सिंटैक्स आम तौर पर बेहतर होता है, जैसा कि आपका मामला एक बार फिर दिखाता है।

और ध्यान रखें कि एकाधिक (LEFT ) JOIN पंक्तियों को गुणा कर सकते हैं:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres सरणियों का उपयोग करने के लिए रेल प्रवासन बदलते स्तंभ

  2. pgAdmin के साथ दूरस्थ PostgreSQL कनेक्शन

  3. मेरे अपने एप्लिकेशन इंस्टॉलर में PostgreSQL इंस्टॉलर जोड़ना

  4. Postgres में संग्रहीत jsonb डेटा की संरचना को कैसे बदलें

  5. PostgreSQL कॉलम मान एक क्रम में होना चाहिए