LEFT JOIN
In this page:
SELECT columns
FROM table1
LEFT JOIN table2
ON table1.column = table2.column;
एक LEFT JOIN क्या है?
एक LEFT JOIN left table की सारी rows रखता है चाहे एक match exist करे या नहीं। यह उन्हें possible होने पर right table की rows से match करता है। अगर कोई match नहीं है, right side row को पूरी तरह drop करने के बजाय NULL return करता है।
उदाहरण: What is a LEFT JOIN?
CREATE TABLE customers (customer_id INT, name TEXT);
CREATE TABLE orders (order_id INT, customer_id INT);
INSERT INTO customers VALUES (1, 'Amit'), (2, 'Priya');
INSERT INTO orders VALUES (101, 1);
SELECT customers.name, orders.order_id
FROM customers LEFT JOIN orders ON customers.customer_id = orders.customer_id;
Unmatched Rows ढूँढना
आप left table में ऐसी rows ढूँढ सकते हैं जिनकी right table में कोई matches नहीं, जैसे वे customers जिन्होंने कभी order नहीं किया। इसके लिए, right table के किसी column पर एक WHERE IS NULL check के साथ एक LEFT JOIN इस्तेमाल करें।
उदाहरण: Finding Unmatched Rows
CREATE TABLE customers (customer_id INT, name TEXT);
CREATE TABLE orders (order_id INT, customer_id INT);
INSERT INTO customers VALUES (1, 'Amit'), (2, 'Priya');
INSERT INTO orders VALUES (101, 1);
SELECT customers.name
FROM customers LEFT JOIN orders ON customers.customer_id = orders.customer_id
WHERE orders.order_id IS NULL;
Left बनाम Right Sides Filter करना
LEFT JOIN इस्तेमाल करते समय ON clause में filtering WHERE clause में filtering से अलग behave करती है। ON clause join होने से पहले filter करता है, extra condition fail होने पर भी left-side rows preserve करते हुए, जबकि right table पर एक WHERE filter चुपचाप आपके LEFT JOIN को एक INNER JOIN में बदल सकता है।
उदाहरण: Filtering Left vs Right Sides
CREATE TABLE customers (customer_id INT, name TEXT);
CREATE TABLE orders (order_id INT, customer_id INT, total INT);
INSERT INTO customers VALUES (1, 'Amit'), (2, 'Priya');
INSERT INTO orders VALUES (101, 1, 500);
-- Filter in ON: keeps all customers
SELECT customers.name, orders.total
FROM customers LEFT JOIN orders ON customers.customer_id = orders.customer_id AND orders.total > 100;
-- Filter in WHERE: turns it into an INNER JOIN
SELECT customers.name, orders.total
FROM customers LEFT JOIN orders ON customers.customer_id = orders.customer_id
WHERE orders.total > 100;
कई LEFT JOINs
आप एक साथ कई optional relationships खींचने के लिए कई LEFT JOIN statements chain कर सकते हैं। यह कई अलग tables से optional details खींचने के लिए helpful है, जैसे किसी customer का सबसे हाल का order और उनका loyalty tier, इनमें से कोई missing होने पर customers को exclude किए बिना।
उदाहरण: Multiple LEFT JOINs
CREATE TABLE customers (customer_id INT, name TEXT);
CREATE TABLE orders (order_id INT, customer_id INT);
CREATE TABLE loyalty (customer_id INT, tier TEXT);
INSERT INTO customers VALUES (1, 'Amit');
INSERT INTO orders VALUES (101, 1);
INSERT INTO loyalty VALUES (1, 'Gold');
SELECT customers.name, orders.order_id, loyalty.tier
FROM customers
LEFT JOIN orders ON customers.customer_id = orders.customer_id
LEFT JOIN loyalty ON customers.customer_id = loyalty.customer_id;
COALESCE / IFNULL के साथ LEFT JOIN
जब कोई match न मिलने की वजह से एक join NULL return करता है, आप इसे COALESCE या IFNULL इस्तेमाल करके एक fallback value से replace कर सकते हैं। यह आपके reports को neat और clean रखता है, एक blank cell के बजाय 'No orders yet' जैसा कुछ दिखाते हुए।
उदाहरण: LEFT JOIN with COALESCE / IFNULL
CREATE TABLE customers (customer_id INT, name TEXT);
CREATE TABLE orders (order_id INT, customer_id INT);
INSERT INTO customers VALUES (1, 'Amit'), (2, 'Priya');
INSERT INTO orders VALUES (101, 1);
SELECT customers.name, COALESCE(orders.order_id, 'No orders yet') AS latest_order
FROM customers LEFT JOIN orders ON customers.customer_id = orders.customer_id;
ONके बजायWHEREमें right table पर एक filter रखना, जोNULLrows हटा देता है और इसे एक inner join में बदल देता है।IS NULLके बजाय= NULLसे unmatched rows check करना।- table order swap करना और गलत table preserve हो जाना।
Chapter Quiz — Complete all 10 topics to unlock
0/10 topics done
Complete these topics first: