Kodokon kodokon.com

INNER JOIN: दो टेबल को जोड़ना

INNER JOIN, पठनीय एलियास और एक सटीक जॉइन शर्त की मदद से दो टेबल के डेटा को आपस में मिलाएँ।

7 मिनट · 3 प्रश्न

इस पाठ को Kodokon में खोलें

एक वास्तविक डेटाबेस कभी भी सब कुछ एक ही टेबल में संग्रहीत नहीं करता: एक ओर ग्राहक, दूसरी ओर उनके ऑर्डर। इस मॉड्यूल का अभ्यास करने के लिए, अपने ब्राउज़र में sqliteonline.com खोलें (किसी इंस्टॉलेशन की ज़रूरत नहीं) या किसी टर्मिनल में sqlite3 टूल शुरू करें। सबसे पहले नीचे दी गई स्क्रिप्ट पेस्ट करें: यह इस पाठ में उपयोग होने वाली दो टेबल बनाती है।

SQL
CREATE TABLE customers (
  id INTEGER PRIMARY KEY,
  name TEXT NOT NULL,
  city TEXT
);

CREATE TABLE orders (
  id INTEGER PRIMARY KEY,
  customer_id INTEGER NOT NULL,
  amount REAL NOT NULL,
  ordered_at TEXT NOT NULL
);

INSERT INTO customers (id, name, city) VALUES
  (1, 'Alice', 'Lyon'),
  (2, 'Karim', 'Paris'),
  (3, 'Mina', 'Nantes');

INSERT INTO orders
  (id, customer_id, amount, ordered_at)
VALUES
  (1, 1, 49.90, '2026-06-01'),
  (2, 1, 15.00, '2026-06-12'),
  (3, 2, 120.50, '2026-06-15');
शुरुआती स्क्रिप्ट: आगे आने वाले उदाहरणों से पहले इसे चलाएँ।

INNER JOIN दो टेबल को पंक्ति-दर-पंक्ति एक मिलान शर्त के अनुसार जोड़ता है, जो ON के बाद लिखी जाती है। यहाँ, हर ऑर्डर उस ग्राहक से जुड़ा है जिसका id उसके customer_id के बराबर है। जिन पंक्तियों का कोई मिलान नहीं होता, वे परिणाम से हटा दी जाती हैं: मीना, जिसने कुछ भी ऑर्डर नहीं किया, दिखाई नहीं देती।

SQL
SELECT customers.name, orders.amount
FROM orders
INNER JOIN customers
  ON customers.id = orders.customer_id;
हर ऑर्डर, उसके ग्राहक के नाम के साथ।

पूरे टेबल नाम बार-बार लिखना जल्दी ही अपठनीय हो जाता है। AS के साथ घोषित किया गया एक एलियास क्वेरी की अवधि के लिए टेबल का नाम बदल देता है। हमेशा अस्पष्ट कॉलम के आगे उपसर्ग लगाएँ: id दोनों टेबल में मौजूद है, इसलिए c.id या o.id लिखें, कभी अकेला id नहीं।

SQL
SELECT c.name, o.amount, o.ordered_at
FROM orders AS o
INNER JOIN customers AS c
  ON c.id = o.customer_id
WHERE o.amount > 20
ORDER BY o.amount DESC;
छोटे एलियास, एक फ़िल्टर और एक सॉर्ट: एक सामान्य पेशेवर क्वेरी।

ज्ञान जांच

सुनिश्चित करें कि आपको इस पाठ के मुख्य बिंदु याद हैं।

  1. किसी जॉइन में, कौन सा कीवर्ड दो टेबल के बीच मिलान शर्त को प्रस्तुत करता है?
    • WHERE
    • ON
    • HAVING
    • MATCH
  2. customers और orders के बीच INNER JOIN के साथ, ऐसे ग्राहक का क्या होता है जिसका कोई ऑर्डर नहीं है?
    • वह NULL कॉलम के साथ दिखाई देता है
    • वह परिणाम से अनुपस्थित रहता है
    • क्वेरी विफल हो जाती है
  3. customers और orders को जोड़ने वाली क्वेरी में id के बजाय c.id क्यों लिखें?
    • क्वेरी के निष्पादन को तेज़ करने के लिए
    • क्योंकि id दोनों टेबल में मौजूद है और अस्पष्ट होगा
    • क्योंकि SQLite हर कॉलम के लिए इसकी माँग करता है