-
שלום,
אני מנסה לקבל מידע משני טבלאות שיש לי ב MYSQL
- טבלת הזמנות עם פרטי ההזמנה.
- סל הקניה עם פרטי המוצרים ומחירים
אני מנסה ליצור שאילתא שתתן לי לי עבור כל הזמנה את פרטיה מטבלה מס' 1, ואת מספר המוצרים והסכום מטבלה מספר 2,
מה שחשוב לי לראות גם הזמנות שאין בהם מוצרים (הזמנות ריקות)
זה מה שעשיתי
SELECT orders.*, SUM(product.price) AS cartSum, COUNT(product.id) AS productCount FROM orders LEFT JOIN product ON orders.id = product.orderId GROUP BY product.orderId
את השורות שיש התאמה בין שני הטבלאות אני מקבל את כולם
אך אני מקבל רק שורה אחת (מתוך מאות) של הזמנות שאין התאמה מטבלה מספר 2תודה
-
@יוס אמר בLEFT JOIN לא מציג את השורות שאין התאמה:
GROUP BY product.orderId
תשנה את זה
GROUP BY product.orderId
לGROUP BY orders.id
.
הסבר: אתה קיבצת לפי מס' הזמנה של שדה ההזמנה שבטבלת המוצרים. באורח פלא, כל ההזמנות להם אין שום שורה בטבלת המוצרים, הערך של השדה product.orderId שלהם הוא זהה (null)... -
עריכה: עד שסיימתי את זה ראיתי את התגובה של @dovid
מצאתי את הטעות,
עשיתי GROUP BY product.orderId
אך לא קיבצתי גם את הנתונים שבטבלה 1זה המתוקן
SELECT orders.*, SUM(product.price) AS cartSum, COUNT(product.id) AS productCount FROM orders LEFT JOIN product ON orders.id = product.orderId GROUP BY orders.id, product.orderId
-