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

INNER JOIN

INNER JOIN हर order slip को उसके customer card से match करने और सिर्फ साथ fit होने वाले pairs रखने जैसा है।
Syntax
sql
SELECT columns
FROM table1
INNER JOIN table2
  ON table1.column = table2.column;

एक INNER JOIN क्या है?

एक INNER JOIN दो tables से rows को एक related column के आधार पर match करता है, जैसे orders को उनके customers से match करना। यह सिर्फ उन rows को शामिल करता है जहाँ join condition दोनों tables में satisfy हो, इसलिए दोनों तरफ की unmatched rows पूरी तरह drop हो जाती हैं।

उदाहरण: What is an INNER 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 orders.order_id, customers.name
FROM orders INNER JOIN customers ON orders.customer_id = customers.customer_id;

Explicit बनाम Implicit Join Syntax

Explicit joins match condition बताने वाले एक ON clause के साथ INNER JOIN keyword इस्तेमाल करते हैं। Implicit joins इसके बजाय एक comma और एक WHERE clause इस्तेमाल करते हैं। Explicit joins preferred हैं क्योंकि join logic किसी additional filtering से clearly separate होती है।

उदाहरण: Explicit vs Implicit Join Syntax

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);
-- Explicit
SELECT * FROM orders INNER JOIN customers ON orders.customer_id = customers.customer_id;
-- Implicit
SELECT * FROM orders, customers WHERE orders.customer_id = customers.customer_id;

Filtering के साथ INNER JOIN

join खुद उन्हें match कर लेने के बाद आप joined rows filter करने के लिए एक WHERE clause add कर सकते हैं। यह आपके matches को specific criteria के आधार पर narrow करता है, जैसे सिर्फ पिछले 30 दिनों में placed orders।

उदाहरण: INNER JOIN with Filtering

sql
CREATE TABLE customers (customer_id INT, name TEXT);
CREATE TABLE orders (order_id INT, customer_id INT, order_date TEXT);
INSERT INTO customers VALUES (1, 'Amit');
INSERT INTO orders VALUES (101, 1, '2024-01-01'), (102, 1, '2024-06-01');
SELECT orders.order_id, customers.name
FROM orders INNER JOIN customers ON orders.customer_id = customers.customer_id
WHERE orders.order_date > '2024-03-01';

कई Tables Join करना

आप एक single query में तीन या ज़्यादा tables साथ join कर सकते हैं, जैसे orders को customers और products से connect करना। इसके लिए, अपनी query में कई INNER JOIN clauses chain करें, हर एक की अपनी ON condition के साथ।

उदाहरण: Joining Multiple Tables

sql
CREATE TABLE customers (customer_id INT, name TEXT);
CREATE TABLE orders (order_id INT, customer_id INT, product_id INT);
CREATE TABLE products (product_id INT, product_name TEXT);
INSERT INTO customers VALUES (1, 'Amit');
INSERT INTO products VALUES (10, 'Keyboard');
INSERT INTO orders VALUES (101, 1, 10);
SELECT customers.name, products.product_name
FROM orders
INNER JOIN customers ON orders.customer_id = customers.customer_id
INNER JOIN products ON orders.product_id = products.product_id;

Aggregations के साथ INNER JOIN

Joins को GROUP BY के साथ combine करना आपको related tables में group statistics calculate करने देता है, जैसे प्रति customer total spend। join के relevant rows connect कर देने के बाद आप प्रति category sum totals या averages ढूँढ सकते हैं।

उदाहरण: INNER JOIN with Aggregations

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, 50), (102, 1, 30);
SELECT customers.name, SUM(orders.total) AS total_spend
FROM orders INNER JOIN customers ON orders.customer_id = customers.customer_id
GROUP BY customers.name;
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 rows का हर combination return करे।
  2. यह उम्मीद करना कि बिना matches वाली rows दिखेंगी, जबकि INNER JOIN उन्हें drop कर देता है।
  3. customer_id जैसे shared column को table name से qualify न करना, एक ambiguous column error देते हुए।
🔒

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.