MySQL Joins Overview
In this page:
SELECT columns
FROM table1
join_type JOIN table2
ON table1.column = table2.column;
एक JOIN क्या है?
एक JOIN दो या ज़्यादा tables से rows को एक single result set में combine करता है, rows को दोनों tables में मौजूद एक related column के आधार पर match करते हुए, जैसे एक customer_id जो customers table को orders table से link करता है।
उदाहरण: What is a JOIN?
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, 50), (102, 2, 75);
SELECT orders.order_id, customers.name
FROM orders JOIN customers ON orders.customer_id = customers.customer_id;
कई Tables Combine क्यों करें?
Related data को अलग tables में split करना same information को बार-बार दोहराने से बचाता है -- एक customer का नाम customers table में एक बार store होता है, उनके हर order पर duplicate नहीं होता -- और JOIN वह है जो उस data को reconnect करता है जब किसी query को इसे साथ देखना हो।
उदाहरण: Why Combine Multiple Tables?
CREATE TABLE customers (customer_id INT, name TEXT);
CREATE TABLE orders (order_id INT, customer_id INT);
INSERT INTO customers VALUES (1, 'Amit');
INSERT INTO orders VALUES (101, 1), (102, 1), (103, 1);
SELECT orders.order_id, customers.name
FROM orders JOIN customers ON orders.customer_id = customers.customer_id;
Join Types का Overview
MySQL कई join types support करता है, जिनमें INNER JOIN, जो सिर्फ matching rows return करता है, LEFT और RIGHT JOIN, जो एक side की सारी rows बिना match के भी रखते हैं, और CROSS JOIN और SELF JOIN दूसरे special cases के लिए, हर एक अपने topic में covered।
उदाहरण: Overview of Join Types
CREATE TABLE customers (customer_id INT, name TEXT);
CREATE TABLE orders (order_id INT, customer_id INT);
INSERT INTO customers VALUES (1, 'Amit');
INSERT INTO orders VALUES (101, 1), (102, 2);
SELECT * FROM orders INNER JOIN customers ON orders.customer_id = customers.customer_id;
SELECT * FROM orders LEFT JOIN customers ON orders.customer_id = customers.customer_id;
SELECT * FROM orders CROSS JOIN customers;
ON Clause
किसी JOIN के बाद आने वाला ON clause दो tables के बीच rows match करने के लिए इस्तेमाल exact condition specify करता है, सबसे common रूप से किसी table में एक foreign key को दूसरे में इसकी reference वाली primary key से compare करते हुए, और एक simple equality check से आगे extra conditions शामिल कर सकता है।
उदाहरण: The ON Clause
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');
INSERT INTO orders VALUES (101, 1, 500), (102, 1, 20);
SELECT orders.order_id, customers.name
FROM orders JOIN customers
ON orders.customer_id = customers.customer_id AND orders.total > 100;
सही Join चुनना
सही join type चुनना इस पर depend करता है कि बिना match वाली rows का क्या होना चाहिए: INNER JOIN सही है जब सिर्फ matched rows उपयोगी हों, जबकि LEFT या RIGHT JOIN सही हैं जब आपको दूसरी तरफ कोई corresponding match न रखने वाली rows भी देखनी हों।
उदाहरण: Choosing the Right 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 FROM customers INNER JOIN orders ON customers.customer_id = orders.customer_id;
SELECT customers.name FROM customers LEFT JOIN orders ON customers.customer_id = orders.customer_id;
- बिना
ONcondition के join करना, जो हर row को हर row के साथ pair कर देता है (एक cross join)। - दोनों tables में मौजूद column names को बिना table prefix इस्तेमाल करना, जो एक
ambiguous columnerror देता है। - ऐसे columns पर join करना जो really related नहीं हैं, ताकि unrelated rows match हो जाएँ।
Chapter Quiz — Complete all 10 topics to unlock
0/10 topics done
Complete these topics first: