ماڈیول اسباق (3/4)
بیرونی شمولیت: "خالی" تلاش کرنا
ماڈیول 3 میں آپ نے دیکھا LEFT JOIN: تمام قطاریں بائیں طرف رکھیں، یہاں تک کہ وہ بھی
دائیں طرف سے میچ کے بغیر (جو NULL بن جاتا ہے)۔ اس باب میں ہم
ٹول کٹ کو RIGHT JOIN اور FULL OUTER JOIN کے ساتھ پھیلائیں، اور ہم سیکھتے ہیں
ڈیٹا میں "سوراخ" تلاش کرنے کے لیے ان کا استعمال کیسے کریں: ایک ٹیبل میں قطاریں
دوسرے میں کوئی ہم منصب نہیں ہے۔
بیرونی شمولیت کی تین اقسام
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'è matchA RIGHT JOIN B کو ہمیشہ اسی کے ساتھ B LEFT JOIN A کے طور پر دوبارہ لکھا جا سکتا ہے
ON: یہ پڑھنے کی اہلیت کا معاملہ ہے۔ بہت سے انداز (بشمول اس کورس)
مستقل مزاجی کے لیے ہمیشہ LEFT JOIN استعمال کرنے کو ترجیح دیں۔
"اینٹی جوائن" پیٹرن: گمشدہ افراد کو تلاش کرنا
LEFT JOIN کا سب سے عام استعمال "پر ڈیٹا کے ساتھ افزودگی نہیں ہے۔
دائیں"، لیکن **بائیں طرف وہ قطاریں تلاش کریں جن کا کوئی میچ نہیں ہے۔
صحیح **. اسے اینٹی جوائن کہتے ہیں:
-- 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;پیٹرن منطق:
LEFT JOINہر پروڈکٹ کے جائزے منسلک کرتا ہے، اگر کوئی ہو؛- جائزے کے بغیر مصنوعات کے لیے، تمام
rکالم ہیںNULL؛ WHERE r.id IS NULLصرف ان پروڈکٹس کو رکھتا ہے۔
کلیدی چیک: ایک id IS NULL دائیں طرف کی میز کے NOT NULL کالم پر
مطلب "کوئی میچ نہیں تھا"۔ آپ اکثر دائیں ہاتھ کے PK پر فلٹر کرتے ہیں۔
بالکل اس وجہ سے میز.
مکمل بیرونی شمولیت
FULL OUTER JOIN بغیر میچ کے دونوں اطراف کو رکھتا ہے۔ یہ شاذ و نادر ہی استعمال ہوتا ہے،
عام طور پر ڈیٹا کی سالمیت کی جانچ کے لیے:
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 والے وہ گاہک ہیں۔
احکامات کے بغیر. ہمارے ڈیٹاسیٹ پر غیر ملکی کلیدیں اس بات کی ضمانت دیتی ہیں کہ کوئی یتیم نہیں ہے۔
احکامات موجود ہیں؛ آرڈر کے بغیر صرف گاہک ہی رہتے ہیں۔
خود ہی آزمائیں۔
Trova tutti i prodotti che non hanno mai ricevuto una recensione. موسٹرا سولو لا کولونا نام۔ Ordina فی نام.
اشارہ دکھائیں۔
پیٹرن اینٹی جوائن: LEFT JOIN جائزے su product_id، poi جہاں r.id NULL ہے۔
3 کوششوں کے بعد حل دستیاب ہے۔
ورزش کا جائزہ لیں۔
Trova i clienti che non hanno mai ordinato nulla. موسٹرا ای میل۔ Ordina فی ای میل۔
اشارہ دکھائیں۔
Stesso پیٹرن dell'esercizio precedente, ma fra گاہک اور آرڈرز۔
3 کوششوں کے بعد حل دستیاب ہے۔