مرکزی مواد پر جائیں
ماڈیول 5 · سبق 1 از 4کورس میں 17/57~12 min
ماڈیول اسباق (1/4)

تین یا زیادہ ٹیبلز پر شامل ہوں۔

ماڈیول 3 میں آپ نے دو ٹیبلز کو جوائن کیا۔ حقیقی دنیا میں ڈیٹا تقریبا ہے ہمیشہ تین یا اس سے زیادہ جدولوں میں بکھرے ہوئے ہیں جو غیر ملکی کلیدوں سے منسلک ہیں: سے ایک کاروباری سوال کا جواب دیں جو آپ کو تعلقات کی زنجیر کو عبور کرنا ہے۔ یہ بالکل وہی ہے جو ایک ملٹی ٹیبل JOIN کرتا ہے۔

اس ماڈیول سے ہم ecommerce ڈیٹاسیٹ استعمال کریں گے (صارفین، زمرہ جات، مصنوعات، آرڈرز، آرڈر آئٹمز، جائزے)۔ آپ اس سے دریافت کر سکتے ہیں۔ ڈیٹاسیٹ سے ecommerce کو منتخب کرکے Playground چننے والا

نحو: JOINs کی ایک زنجیر

SQL
SELECT colonne
FROM   tabella_a
JOIN   tabella_b ON tabella_a.x = tabella_b.y
JOIN   tabella_c ON tabella_b.z = tabella_c.w
[JOIN  tabella_d ON …]
…;

ہر JOIN سلسلہ میں ایک "لنک" جوڑتا ہے: انجن انٹرمیڈیٹ لیتا ہے پچھلی شمولیت کا نتیجہ اور اس کے ساتھ اگلی ٹیبل منسلک کرتا ہے۔

SQL
-- Per ogni riga d'ordine: cliente, prodotto e quantità.
SELECT c.email,
       p.name AS prodotto,
       oi.quantity
FROM   orders      AS o
JOIN   customers   AS c  ON o.customer_id = c.id
JOIN   order_items AS oi ON oi.order_id   = o.id
JOIN   products    AS p  ON oi.product_id = p.id;

تین JOINs، چار میزیں۔ نتیجہ میں ایک قطار فی order_items ہے — ہر ایک ہر آرڈر میں پروڈکٹ - کسٹمر کے ای میل اور پروڈکٹ کے نام سے بھرپور۔

منطقی ترتیب

انجن بائیں سے دائیں میزوں کو جوڑتا ہے۔ ایک JOIN حالت ہو سکتی ہے۔ پہلے سے اوپر متعارف کرائے گئے کسی بھی جدول کا حوالہ دیں۔ پڑھنے کی اہلیت کے لیے:

  • پہلے سوال کا "مین ٹیبل" رکھیں (یہاں orders)؛
  • دوسروں کو اس ترتیب میں شامل کریں جس میں آپ ان کی پیروی کرکے ان کا دورہ کریں۔ تعلقات

JOIN زنجیروں پر جمع

متعدد JOINs کو GROUP BY کے ساتھ ملا کر رپورٹیں تیار کریں:

SQL
-- Spesa totale per cliente (solo ordini consegnati):
SELECT c.email,
       SUM(oi.quantity * oi.unit_price) AS total
FROM   customers   AS c
JOIN   orders      AS o  ON o.customer_id = c.id
JOIN   order_items AS oi ON oi.order_id   = o.id
WHERE  o.status = 'delivered'
GROUP BY c.email
ORDER BY total DESC;

آپ کو یہاں JOIN products کی ضرورت نہیں ہے: ہر وہ چیز جس کی آپ کو ضرورت ہے (quantity, unit_price) پہلے سے ہی order_items میں ہے۔ انگوٹھے کا اصول: ٹیبل شامل نہ کریں۔ آپ استعمال نہیں کرتے — وہ کارکردگی اور پڑھنے کی اہلیت کو نقصان پہنچاتے ہیں۔

خود ہی آزمائیں۔

ورزش#sql.m5.l1.e1
کوششیں: 0لوڈ ہو رہا ہے…

per ogni riga d'ordine degli ordini consegnati (status = 'deliver'), mostra email del cliente, nome del prodotto e quantità. Tre colonne. Ordina per id ordine crescente e id prodotto crescente.

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

تین جوائنز: آرڈرز → کسٹمر_ آئی ڈی پر گاہک، آرڈر → آرڈر_ آئی ڈی پر آرڈر_ آئٹمز، آرڈر_ آئٹمز→ پروڈکٹ_ آئی ڈی پر مصنوعات۔

3 کوششوں کے بعد حل دستیاب ہے۔

ورزش کا جائزہ لیں۔

ورزش#sql.m5.l1.e2
کوششیں: 0لوڈ ہو رہا ہے…

سب سے اوپر 3 کلائنٹی فی سپیسا کل (سومما ڈی مقدار * یونٹ_قیمت) سوئی سولی آرڈینی کنسگنیٹی۔ ڈیو کالون: ای میل اور کل۔ آرڈینا فی کل کمی، حد ایک 3۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

مصنوعات میں شامل ہونے کی پیش کش نہیں کی جاتی ہے: آرڈر_آئٹمز میں مقدار اور یونٹ_قیمت۔

3 کوششوں کے بعد حل دستیاب ہے۔