Ravindra BagaleCourses & study guides Track your progress

15. INNER JOIN आणि LEFT JOIN (आधी लागणारे दोन joins)

15.1 INNER JOIN काय ठेवतं (फक्त जुळणारे rows)

का (Why). बऱ्याचदा दोन tables मधली माहिती एकाच result मध्ये हवी असते, जसं प्रत्येक shipment सोबत त्याचा hub code. INNER JOIN हा सगळ्यात सोपा मार्ग आहे, पण तो गुपचूप rows गाळू शकतो.

काय (What). INNER JOIN फक्त अशा rows च्या जोड्या देतो जिथे ON condition खरी असते. ज्या shipment चा hub अस्तित्वात नाही, किंवा hub NULL आहे, तिला match नसतो, म्हणून ती बाहेर राहते. एकही shipment नसलेला hub सुद्धा बाहेर राहतो. म्हणून INNER JOIN प्रत्येक input row राहील याची खात्री देत नाही: match नसलेले rows बाहेर राहतात.

कसं (How). hub_id वर shipments आणि hubs join करा, मग rows मोजा आणि सुरुवातीच्या 10 shipments शी तुलना करा.

पायऱ्या

  1. पहिलं उदाहरण run करा आणि shipments त्यांच्या hub codes सोबत वाचा.
  2. 1009 आणि 1010 शोधा: त्या result मध्ये नाहीत.
  3. दुसरं उदाहरण run करा आणि join नंतरचा आकडा total शी तुलना करा.
  4. फक्त जुळणारे rows हवे असतील तेव्हाच INNER JOIN वापरा.

उदाहरणे

उदाहरण 1 · dataset: swiftship_logistics

SELECT s.shipment_id, s.hub_id, h.hub_code
FROM shipments AS s
INNER JOIN hubs AS h ON h.hub_id = s.hub_id
ORDER BY s.shipment_id;

Output

shipment_idhub_idhub_code
10011PNQ-01
10021PNQ-01
10032BOM-02
10043DXB-01
10053DXB-01
10064LHR-03
10071PNQ-01
10082BOM-02

Meaning. फक्त 8 shipments दिसतात. 1009 (hub 9 अस्तित्वात नाही) आणि 1010 (hub नाही) गळल्या, आणि Singapore दिसत नाही कारण त्याची एकही shipment नाही.

उदाहरण 2 · dataset: swiftship_logistics

SELECT (SELECT COUNT(*) FROM shipments) AS all_shipments,
       (SELECT COUNT(*)
        FROM shipments AS s
        INNER JOIN hubs AS h ON h.hub_id = s.hub_id) AS after_inner_join;

Output

all_shipmentsafter_inner_join
108

Meaning. 10 shipments आत गेल्या आणि 8 rows बाहेर आले. hubs मध्ये hub_id unique आहे म्हणून इथे हा साधा count चालतो. उजवीकडे key repeat होत असेल तर जास्तीचे rows गळलेले rows लपवू शकतात, म्हणून उजवीकडचा key unique आहे ते तपासा आणि LEFT JOIN व IS NULL ने match नसलेले rows काढा.

Ravindra Bagale's Tip

After every join, compare the row count with the table you started from, check that the right key is unique, and list unmatched rows with LEFT JOIN and IS NULL.