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

क्रॉस जॉइन की शर्तें 'ON' क्लॉज, केवल WHERE क्लॉज में क्यों काम नहीं करती हैं?

क्रॉस जॉइन दो तालिकाओं के बीच एक पूर्ण कार्टेशियन उत्पाद करने के लिए SQL ऑपरेटर है। चूंकि यह एक कार्टेशियन उत्पाद है, इसलिए यह ऑपरेशन के दौरान . किसी भी शर्त की अनुमति नहीं देता है , आप इसके परिणाम को केवल कुछ फ़िल्टरिंग ऑपरेशन (WHERE शर्त) के साथ सीमित कर सकते हैं।

जॉइन (INNER और OUTER JOIN, यानी) ऑपरेटर, ऑपरेटर के ON भाग में व्यक्त फ़िल्टरिंग ऑपरेटर के साथ बस कार्टेशियन उत्पाद हैं (और वास्तव में SQL के मूल सिंटैक्स में कोई JOIN ऑपरेटर नहीं था, बस "अल्पविराम" शामिल होने की शर्त के साथ उत्पाद को हमेशा WHERE भाग में व्यक्त करने के लिए संकेतन)।

उदाहरण:

"पुराना" संकेतन:

SELECT ...
FROM table1 t1, table2 t2
WHERE t1.attribute = t2.attribute

"आधुनिक" संकेतन के बराबर:

SELECT ...
FROM table1 t1 INNER JOIN table2 t2 ON t1.attribute = t2.attribute

जबकि, कार्तीय उत्पाद के लिए:

"पुराना" संकेतन:

SELECT ...
FROM table1 t1, table2 t2

"आधुनिक" संकेतन के बराबर:

SELECT ...
FROM table1 t1 CROSS JOIN table2 t2

दूसरे शब्दों में, एक क्रॉस जॉइन जिसके लिए एक शर्त की आवश्यकता होती है, वह वास्तव में किसी प्रकार का इनर जॉइन होता है।




  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. कैसे SQLAlchemy में अजगर में dataframe.to_sql रोलबैक करने के लिए?

  3. सिम्फनी 3 / सिद्धांत के साथ विशेषताओं के साथ एक-से-एक-से-एक फॉर्म

  4. जेसन या जेसनबी या टेक्स्ट चुनने के लिए कौन सा डेटा प्रकार

  5. PostgreSQL के लिए अच्छा OleDB/ODBC प्रदाता