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

بیرونی شمولیت: "خالی" تلاش کرنا

ماڈیول 3 میں آپ نے دیکھا LEFT JOIN: تمام قطاریں بائیں طرف رکھیں، یہاں تک کہ وہ بھی دائیں طرف سے میچ کے بغیر (جو NULL بن جاتا ہے)۔ اس باب میں ہم ٹول کٹ کو RIGHT JOIN اور FULL OUTER JOIN کے ساتھ پھیلائیں، اور ہم سیکھتے ہیں ڈیٹا میں "سوراخ" تلاش کرنے کے لیے ان کا استعمال کیسے کریں: ایک ٹیبل میں قطاریں دوسرے میں کوئی ہم منصب نہیں ہے۔

بیرونی شمولیت کی تین اقسام

SQL
A LEFT  JOIN B  ON …  -- tutte le righe di A, con o senza match in B
A RIGHT JOIN B  ON …  -- tutte le righe di B, con o senza match in A
A FULL  JOIN B  ON …  -- tutte le righe di A *e* di B; NULL dove non c'è match

A RIGHT JOIN B کو ہمیشہ اسی کے ساتھ B LEFT JOIN A کے طور پر دوبارہ لکھا جا سکتا ہے ON: یہ پڑھنے کی اہلیت کا معاملہ ہے۔ بہت سے انداز (بشمول اس کورس) مستقل مزاجی کے لیے ہمیشہ LEFT JOIN استعمال کرنے کو ترجیح دیں۔

"اینٹی جوائن" پیٹرن: گمشدہ افراد کو تلاش کرنا

LEFT JOIN کا سب سے عام استعمال "پر ڈیٹا کے ساتھ افزودگی نہیں ہے۔ دائیں"، لیکن **بائیں طرف وہ قطاریں تلاش کریں جن کا کوئی میچ نہیں ہے۔ صحیح **. اسے اینٹی جوائن کہتے ہیں:

SQL
-- Prodotti senza nessuna recensione:
SELECT p.id, p.name
FROM   products p
LEFT JOIN reviews r ON r.product_id = p.id
WHERE  r.id IS NULL
ORDER BY p.id;

پیٹرن منطق:

  1. LEFT JOIN ہر پروڈکٹ کے جائزے منسلک کرتا ہے، اگر کوئی ہو؛
  2. جائزے کے بغیر مصنوعات کے لیے، تمام r کالم ہیں NULL؛
  3. WHERE r.id IS NULL صرف ان پروڈکٹس کو رکھتا ہے۔

کلیدی چیک: ایک id IS NULL دائیں طرف کی میز کے NOT NULL کالم پر مطلب "کوئی میچ نہیں تھا"۔ آپ اکثر دائیں ہاتھ کے PK پر فلٹر کرتے ہیں۔ بالکل اس وجہ سے میز.

مکمل بیرونی شمولیت

FULL OUTER JOIN بغیر میچ کے دونوں اطراف کو رکھتا ہے۔ یہ شاذ و نادر ہی استعمال ہوتا ہے، عام طور پر ڈیٹا کی سالمیت کی جانچ کے لیے:

SQL
SELECT c.id AS customer_id, o.id AS order_id
FROM   customers c
FULL OUTER JOIN orders o ON o.customer_id = c.id
WHERE  c.id IS NULL OR o.id IS NULL;

c.id IS NULL والی قطاریں یتیم آرڈر ہوں گی (ایک customer_id کہ customers میں موجود نہیں ہے)۔ o.id IS NULL والے وہ گاہک ہیں۔ احکامات کے بغیر. ہمارے ڈیٹاسیٹ پر غیر ملکی کلیدیں اس بات کی ضمانت دیتی ہیں کہ کوئی یتیم نہیں ہے۔ احکامات موجود ہیں؛ آرڈر کے بغیر صرف گاہک ہی رہتے ہیں۔

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

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

Trova tutti i prodotti che non hanno mai ricevuto una recensione. موسٹرا سولو لا کولونا نام۔ Ordina فی نام.

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

پیٹرن اینٹی جوائن: LEFT JOIN جائزے su product_id، poi جہاں r.id NULL ہے۔

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

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

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

Trova i clienti che non hanno mai ordinato nulla. موسٹرا ای میل۔ Ordina فی ای میل۔

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

Stesso پیٹرن dell'esercizio precedente, ma fra گاہک اور آرڈرز۔

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