PHP ਪਾਠ - ਪਾਠ 3.6 - MySQL ਡਾਟਾਬੇਸ ਨਾਲ ਕੰਮ ਕਰਨਾ। JOIN ਆਪਰੇਟਰ ਦੇ ਪ੍ਰਕਾਰ।
MySQL में JOIN की मदद से चयन (selection) कई तरीकों से किया जा सकता है। हम इन सभी प्रकार के क्वेरीज़ को विस्तार से समझने की कोशिश करेंगे। यहाँ JOIN से संबंधित सभी प्रकार के क्वेरीज़ की सूची दी गई है:
- INNER JOIN
- LEFT JOIN
- RIGHT JOIN
- LEFT JOIN जिसमें दाएँ तालिका के साथ कोई मेल नहीं होता
- RIGHT JOIN जिसमें बाएँ तालिका के साथ कोई मेल नहीं होता
- FULL OUTER
- FULL OUTER जहाँ बाईं या दाईं तालिका खाली होती है
इन प्रकारों के JOIN की एक चित्रात्मक व्याख्या नीचे दी गई है:
मैं इस लेख के साथ हमारी साइट की कुछ फ़ाइलें जोड़ूँगा, जिनमें join.php भी होगा, जहाँ मैं विभिन्न JOIN ऑपरेटरों की मदद से सभी रिकॉर्ड दिखाऊँगा।
INNER JOIN
हम INNER JOIN ऑपरेटर से शुरुआत करेंगे क्योंकि जब आप केवल JOIN लिखते हैं तो यह डिफ़ॉल्ट रूप से कार्य करता है। यह ऑपरेटर उन सभी रिकॉर्ड्स को चुनता है जहाँ दोनों तालिकाओं में ON के बाद दी गई शर्त पूरी होती है। हमारे पास दो तालिकाएँ हैं: Files और Messages।
Messages तालिका:
mid | bodytext | fid |
1 | Test | NULL |
2 | Hi | 2 |
3 | Hello | NULL |
Files तालिका:
fid | path |
1 | /files/1.png |
2 | /files/2.png |
3 | /files/3.png |
JOIN क्वेरी इस प्रकार होगी:
SELECT * FROM Messages INNER JOIN Files ON Messages.fid=Files.fid
परिणामस्वरूप हमें निम्नलिखित रिकॉर्ड मिलेंगे:
mid | bodytext | fid | path |
2 | Hi | 2 | /files/2.png |
यानी जहाँ fid समान होता है, वहाँ MySQL इन पंक्तियों को प्रदर्शित करेगा।
LEFT JOIN
LEFT JOIN के साथ हम बाईं तालिका (हमारे मामले में Messages) के सभी रिकॉर्ड प्रदर्शित करते हैं, जिनमें से कुछ में fid के मान Files तालिका में भी होते हैं।
Messages तालिका:
mid | bodytext | fid |
1 | Test | 2 |
2 | Hi | NULL |
3 | Hello | 3 |
Files तालिका:
fid | path |
1 | /files/1.png |
2 | /files/2.png |
3 | /files/3.png |
LEFT JOIN क्वेरी इस प्रकार होगी:
SELECT * FROM Messages LEFT JOIN Files ON Messages.fid=Files.fid
परिणामस्वरूप हमें निम्न रिकॉर्ड प्राप्त होंगे:
mid | bodytext | fid | path |
1 | Test | 2 | /files/2.png |
2 | Hi | NULL | NULL |
3 | Hello | 3 | /files/3.png |
LEFT JOIN तब उपयोगी है जब हमें सभी संदेश दिखाने होते हैं, चाहे उनके साथ कोई फ़ाइल जुड़ी हो या नहीं। बाद में हम PHP से जाँच सकते हैं कि फ़ाइल जुड़ी है या नहीं।
LEFT JOIN जिसमें दाएँ तालिका के साथ कोई मेल नहीं होता
LEFT JOIN बिना मेल के बाईं तालिका की सभी पंक्तियाँ प्रदर्शित करता है जिनमें fid का कोई मेल दाईं तालिका में नहीं होता।
Messages तालिका:
mid | bodytext | fid |
1 | Test | 2 |
2 | Hi | NULL |
3 | Hello | 3 |
Files तालिका:
fid | path |
1 | /files/1.png |
2 | /files/2.png |
3 | /files/3.png |
LEFT JOIN बिना मेल के क्वेरी इस प्रकार होगी:
SELECT * FROM Messages LEFT JOIN Files ON Messages.fid=Files.fid WHERE Files.fid IS NULL
इस क्वेरी का परिणाम होगा:
mid | bodytext | fid | path |
2 | Hi | NULL | NULL |
LEFT JOIN बिना मेल के तब उपयोगी होता है जब हमें उन सभी रिकॉर्ड्स को दिखाना हो जिनके साथ कोई फ़ाइल संलग्न नहीं है।
RIGHT JOIN
RIGHT JOIN दाईं तालिका की सभी पंक्तियाँ दिखाता है, और जहाँ मेल होता है, वहाँ बाईं तालिका के डेटा भी शामिल होते हैं।