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

दो तालिकाओं में कैसे शामिल हों, उनमें से एक में प्राथमिक कुंजी नहीं है और समान वर्ण लंबाई नहीं है

केवल पहले 8 वर्णों की तुलना करने के लिए इसे आज़माएं:

SELECT r.domainid, r.dombegin, r.domend, d.ddid 
FROM   domainregion r
JOIN   dyndomrun d ON r.domainid::varchar(8) = d.ddid 
ORDER  BY r.domainid, d.ddid, r.dombegin, r.domend;

कास्ट परोक्ष रूप से अनुगामी पात्रों को ट्रिम करता है। ddid शुरू करने के लिए केवल 8 वर्ण हैं। इसे संसाधित करने की भी आवश्यकता नहीं है। यह वही हासिल करता है:

JOIN   dyndomrun d ON left(r.domainid, 8) = d.ddid 

हालांकि, सलाह दी जाती है कि स्ट्रिंग फ़ंक्शन left() केवल PostgreSQL 9.1 के साथ पेश किया गया था। पुराने संस्करणों में आप स्थानापन्न कर सकते हैं:

JOIN   dyndomrun d ON substr(r.domainid, 1, 8) = d.ddid

__

शुरुआती लोगों के लिए बुनियादी स्पष्टीकरण:

  • क्वेरी JOIN . का उपयोग करती है . मैन्युअल में इसके बारे में अधिक पढ़ें

  • FROM domainregion r FROM domainregion AS r . के लिए संक्षिप्त है . AS PostgreSQL में इस मामले में सिर्फ शोर है। तालिका उपनाम क्वेरी को छोटा और पढ़ने में आसान बनाता है लेकिन यहां इसका कोई अन्य प्रभाव नहीं है। उदाहरण के लिए, आप एक ही टेबल को कई बार शामिल करने के लिए टेबल एलियासेस का भी इस्तेमाल कर सकते हैं।

  • शामिल होने की शर्त ON r.domainid::varchar(8) = d.ddid केवल उन पंक्तियों को एक साथ जोड़ता है जहाँ दो भाव बिल्कुल मेल खाते हैं। फिर से, उन मैन्युअल में मूल बातें के बारे में पढ़ें। ए> (या कोई अन्य स्रोत)।

यह एक साधारण प्रश्न है, यहाँ समझाने के लिए बहुत कुछ नहीं है।




  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.h' फ़ाइल को कैसे ठीक करें समस्या नहीं मिली?

  2. स्क्रिप्ट निष्पादित करने के लिए pgAdmin शॉर्टकट

  3. PostgreSQL:.psql_history से /dev/null

  4. PostgreSQL 13 में नया क्या है?

  5. मैं php में sql क्वेरी निष्पादन को कैसे रोक सकता हूं?