← Back to MySQL Course | Chapter 9: Joins | Lesson 1 of 10

MySQL Joins Overview

एक JOIN किसी related column के आधार पर दो या ज़्यादा tables से rows combine करता है, और MySQL कई join types support करता है -- INNER, LEFT, RIGHT, CROSS, और SELF -- हर एक unmatched rows को अलग तरह रखता या हटाता है।
Syntax
sql
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?

sql
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?

sql
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

sql
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

sql
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

sql
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;
Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}
आम गलतियां
  1. बिना ON condition के join करना, जो हर row को हर row के साथ pair कर देता है (एक cross join)।
  2. दोनों tables में मौजूद column names को बिना table prefix इस्तेमाल करना, जो एक ambiguous column error देता है।
  3. ऐसे columns पर join करना जो really related नहीं हैं, ताकि unrelated rows match हो जाएँ।
🔒

Chapter Quiz — Complete all 10 topics to unlock

0/10 topics done

Complete these topics first:

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.