我想从销售表中总结金额,并希望按品牌分组,任何人都可以帮我正确查询php mysql。
--- product ---
id pcode pname brand
1 123 Dalda 1
2 124 Habib 1
3 125 Sufi 2
4 126 Toyota 3
--- sale ---
id pcode pname amount
1 123 Dalda 1020
2 123 Dalda 1020
3 124 Habib 1030
4 124 Habib 1030
5 125 Sufi 1040
6 125 Sufi 1040
7 126 Toyota 1050
答案 0 :(得分:1)
SELECT
p.pname,
IFNULL(SUM(amount), 0) AS TotalAmount
FROM product p
LEFT JOIN sale s ON p.pcode = s.pcode
GROUP BY p.pname;
这会给你:
| PNAME | TOTALAMOUNT |
------------------------
| Dalda | 2040 |
| Habib | 2060 |
| Sufi | 2080 |
| Toyota | 1050 |
请注意:无需将pname
存储在第二个表Sale
中。删除它,因为它已存储在第一个表Product
。
答案 1 :(得分:1)
select p.brand, sum(s.amount)
FROM product p
INNER JOIN sale s on s.pcode = p.pcode
GROUP BY p.brand
您只能获得在销售表中有条目的品牌。
如果您想要所有品牌,即使没有参与销售表,也请使用LEFT JOIN
和
COALESCE(SUM(amount, 0))
顺便说一句,正如Mahmoud Gamal所指出的,你不需要表Sale中的pname。我也不会将pcode用作“关系列”,而是使用产品ID。因此,您可以删除pcode和pname,并使用新列p_id,例如。
答案 2 :(得分:0)
select pr.pcode,pr.pname,pr.brand,sum(s.amount)
from product pr
left join sale s
on pr.pcode=s.pcode
group by pr.pcode,pr.pname,pr.brand