Php 表2和表1分组的总金额';s场
我想对销售表中的金额求和并按品牌进行分组,有人能帮我正确查询php mysql吗Php 表2和表1分组的总金额';s场,php,mysql,Php,Mysql,我想对销售表中的金额求和并按品牌进行分组,有人能帮我正确查询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
--- 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
这将为您提供:
| PNAME | TOTALAMOUNT |
------------------------
| Dalda | 2040 |
| Habib | 2060 |
| Sufi | 2080 |
| Toyota | 1050 |
注意:无需将pname
存储在第二个表Sale
中。删除它,因为它已存储在第一个表Product
中
select p.brand, sum(s.amount)
FROM product p
INNER JOIN sale s on s.pcode = p.pcode
GROUP BY p.brand
您将只获得在sales表中有条目的品牌
如果您想要所有品牌,即使销售表中没有条目,也可以使用左连接
和
COALESCE(SUM(amount, 0))
顺便说一句,正如马哈茂德·贾马尔所指出的,在桌面销售中不需要pname。我不会使用pcode作为“关系列”,而是使用产品id。因此,您可以删除pcode和pname,并使用新的列p_id,例如。我认为pname是一个产品名称,而不是品牌名称。因此,这将按产品名称进行分组,而不是按品牌。@RaphaëlAlthaus,但是
sale
中的pcode|pname
值与product
表中的pcode|pname
值相同?这就是为什么我认为它们是相同的。它们是相同的“产品”,但不是相同的“品牌”(见表产品,第1行和第2行:2个产品:2个pcode,2个pname,1个品牌)。@user2035872随时欢迎您。顺便说一句:如果你觉得有帮助的话,试试看,或者这里给出的任何其他答案。通过勾选答案左边的标记。这就是在SO中的工作原理。谢谢
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
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