שיעורי מודול (1/4)
מצטרפים בשלושה שולחנות או יותר
במודול 3 הצטרפת ל-שני טבלאות. בעולם האמיתי הנתונים כמעט
תמיד מפוזרים על פני שלושה או יותר טבלאות המקושרות באמצעות מפתחות זרים: to
תענה על שאלה עסקית שאתה צריך כדי לעבור את שרשרת היחסים.
זה בדיוק מה שעושה JOIN מרובה שולחנות.
ממודול זה ואילך נשתמש במערך הנתונים ecommerce (לקוחות,
קטגוריות, מוצרים, הזמנות, הזמנות פריטים, ביקורות). אתה יכול לחקור את זה מ
את מגרש המשחקים על ידי בחירת ecommerce מתוך מערך הנתונים
בוחר.
התחביר: שרשרת של JOINs
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 מוסיף "קישור" לשרשרת: המנוע לוקח את הביניים
תוצאה של ה-JOIN הקודמים ומצרף אליו את הטבלה הבאה.
-- 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 כדי להפיק דוחות:
-- 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. כלל אצבע: אל תוסיף טבלאות
אתה לא משתמש - הם פוגעים בביצועים ובקריאות.
נסה זאת בעצמך
Per ogni riga d'ordine degli ordini consegnati (סטטוס = 'נמסר'), דוא"ל לקוחות, שם מוצר וכמות. טרה קולון. Ordina per id ordine crescente e id prodotto crescente.
הצג רמז
שלושה מצטרפים: הזמנות →לקוחות במזהה_לקוח, הזמנות→פריטים_הזמנה במזהה_הזמנה, הזמנה_פריטים →מוצרים במזהה_מוצר.
הפתרון זמין לאחר 3 ניסיונות
סקירת התרגיל
3 הלקוחות הטובים ביותר לכל סכום כולל (כמות גדולה * מחיר יחידה) סוי יחיד רגיל. Due colonne: דוא"ל e total. סדנה לכל ירידה, מוגבלת ל-3.
הצג רמז
מוצרים שאינם משרתים JOIN: כמות ומחיר_יחידה סונו בהזמנה_פריטים.
הפתרון זמין לאחר 3 ניסיונות