Php 表2和表1分组的总金额';s场

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

我想对销售表中的金额求和并按品牌进行分组,有人能帮我正确查询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
这将为您提供:

|  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