שיעורי מודול (3/4)
חיבור חיצוני: מציאת ה"פערים"
במודול 3 ראית את LEFT JOIN: השאר את כל השורות בצד שמאל, אפילו אלה
ללא התאמה מימין (שהופכים ל-NULL). בפרק זה אנחנו
הרחב את ערכת הכלים עם RIGHT JOIN ו-FULL OUTER JOIN, ואנחנו לומדים
כיצד להשתמש בהם כדי למצוא את "החורים" בנתונים: שורות בטבלה אחת
have no counterpart in the other.
שלושת הסוגים של OUTTER 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: זה עניין של קריאות. Many styles (including this course)
מעדיף להשתמש תמיד ב-LEFT JOIN לצורך עקביות.
דפוס ה"אנטי-הצטרפות": מציאת החסרים
השימוש הנפוץ ביותר ב-LEFT JOIN אינו "העשר בנתונים על
ימין", אבל מצא את השורות משמאל שאין להן התאמה ב-
נכון. It's called an anti-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 של הטבלה הימנית
means "there was no match". You often filter on the PK of the right-hand
table precisely for this reason.
הצטרפות חיצונית מלאה
FULL OUTER JOIN שומר על שני הצדדים ללא התאמה. נעשה בו שימוש נדיר,
typically for data integrity checks:
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 ש
doesn't exist in customers). Those with o.id IS NULL are customers
ללא פקודות. במערך הנתונים שלנו המפתחות הזרים מבטיחים שאין יתום
קיימות פקודות; only the customers without orders remain.
נסה זאת בעצמך
Trova tutti i prodotti che non hanno mai ricevuto una recensione. שם מוסטרה סולו לה קולונה. אורדינה לשם.
הצג רמז
דפוס נגד הצטרפות: LEFT JOIN ביקורות su product_id, poi WHERE r.id IS NULL.
הפתרון זמין לאחר 3 ניסיונות
סקירת התרגיל
Trova i clienti che non hanno mai ordinato nulla. אימייל של מוסטרה. אורדינה למייל.
הצג רמז
Stesso pattern dell'esercizio precedente, ma fra לקוחות e הזמנות.
הפתרון זמין לאחר 3 ניסיונות