@ש-ב-ח כתב בSQL IN GROUP_CONCAT:
לצערי ישנה שגיאה: Invalid use of group function
אכן, טעות שלי, אי אפשר לבצע MIN על SUM וזה גם לא היה נכון לו זה היה אפשרי.
סיכום הפריטים של פריטי ההזמנה (בעצם כל פריט יכול להיות כמה יחי'),
הסכום שהלקוח שילם כבר (כל התשלומים שלו ).
המאזן שלו (המחירים של כל פריט ההזמנות בקיזוז כל התשלומים שלו עליהם).
ועדיין איני יודע אם שורה לכל הזמנה, או שורה אחת לכולם.
זה שורה אחת ללקוח (כל ההזמנות וכל התשלומים מכווצים בשורה אחת),
אני לא יודע אם זה עובד (אולי יש טעויות תחביר או טעות לוגית שלי או שגם לא הבנתי את הצרכים או את המבנה) אבל זה הכיוון הנכון, לבודד תצוגות (למשל פה השאילתה הפנימית זה תצוגת הזמנות עם סכומיהם), ולעבוד מולם.
SELECT
customers.id,
customers.name,
customers.email,
customers.phone,
Orders_with_sum.order_id
SUM(Orders_with_sum.Sum_All_Items) AS Sum_Orders,
SUM(payments.amount) AS Sum_Payments,
SUM(Orders_with_sum.Sum_All_Items) - SUM(payments.amount) AS balance ,
FROM customers
LEFT JOIN
(
SELECT
orders.id AS order_id
orders.customer_id AS customer_id
SUM(order_items.price) AS Sum_All_Items
FROM orders
LEFT JOIN order_items on orders.id = order_items.order_id
GROUP BY orders.id
) AS Orders_with_sum ON Orders_with_sum.customer_id = customers.id
LEFT JOIN payments ON payments.order_id = orders.id
GROUP BY customers.id