15. INNER JOIN आणि LEFT JOIN (आधी लागणारे दोन joins)
15.5 Practice: Customer ची नावं आणि hubs सोबत shipments
का (Why). Logistics team रोज मागते तशी ही यादी आहे: प्रत्येक shipment सोबत customer चं नाव आणि hub, आणि problems स्पष्ट दाखवलेले.
काय (What). एकाच query मध्ये तीन tables join करता. Shipments डावीकडचा table आहे, म्हणून प्रत्येक shipment राहते. Customers आणि hubs LEFT JOIN ने जोडले जातात, आणि hub रिकामा का आहे ते CASE expression सांगतो.
कसं (How). FROM shipments ने सुरू करा, customers LEFT JOIN करा, मग hubs LEFT JOIN करा, आणि hub_status column जोडा.
पायऱ्या
- आधी अपेक्षित आकडा लिहा: प्रत्येक shipment साठी एक, म्हणजे 10 rows.
- उदाहरण run करा.
- 10 rows आहेत आणि प्रत्येक customer चं नाव भरलेलं आहे ते तपासा.
- hub_status वाचा: 8 shipments साठी OK, 1009 साठी Hub not found, 1010 साठी Hub missing.
उदाहरणे
उदाहरण 1 · dataset: swiftship_logistics
SELECT s.shipment_id,
c.customer_name,
h.hub_code,
CASE
WHEN s.hub_id IS NULL THEN 'Hub missing'
WHEN h.hub_id IS NULL THEN 'Hub not found'
ELSE 'OK'
END AS hub_status
FROM shipments AS s
LEFT JOIN customers AS c ON c.customer_id = s.customer_id
LEFT JOIN hubs AS h ON h.hub_id = s.hub_id
ORDER BY s.shipment_id;Output
| shipment_id | customer_name | hub_code | hub_status |
|---|---|---|---|
| 1001 | Kavya Traders | PNQ-01 | OK |
| 1002 | Kavya Traders | PNQ-01 | OK |
| 1003 | Desai Pharma | BOM-02 | OK |
| 1004 | Al Noor Foods | DXB-01 | OK |
| 1005 | Al Noor Foods | DXB-01 | OK |
| 1006 | Thames Books | LHR-03 | OK |
| 1007 | Lotus Crafts | PNQ-01 | OK |
| 1008 | Desai Pharma | BOM-02 | OK |
| 1009 | Thames Books | NULL | Hub not found |
| 1010 | Lotus Crafts | NULL | Hub missing |
Meaning. सगळ्या 10 shipments customer च्या नावांसह दिसतात. 1009 साठी Hub not found आहे, कारण hub 9 अस्तित्वात नाही. 1010 साठी Hub missing आहे, कारण त्याचा hub आत्ता माहीत नाही. Team त्या दोन source मध्ये दुरुस्त करू शकते.
Ravindra Bagale's Tip
Check s.hub_id IS NULL before h.hub_id IS NULL in the CASE. Both are NULL-related, but only the first one means the shipment's own hub value is unknown.
Ravindra Bagale's Tip – मराठी
CASE मध्ये h.hub_id IS NULL आधी s.hub_id IS NULL तपासा. दोन्ही NULL शी संबंधित आहेत, पण shipment ची स्वतःची hub value माहीत नाही असा अर्थ फक्त पहिल्याचा आहे.
Ravindra Bagale's Tip – हिंदी
CASE में h.hub_id IS NULL से पहले s.hub_id IS NULL जाँचिए। दोनों NULL से जुड़े हैं, पर value कभी भरी ही नहीं, यह मतलब सिर्फ़ पहले का है।