php mysql表2的数量和表1的字段组合

时间:2013-02-04 10:13:40

标签: 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     Dalda   1020
3   124     Habib   1030
4   124     Habib   1030
5   125     Sufi    1040
6   125     Sufi    1040
7   126     Toyota  1050

3 个答案:

答案 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;

SQL Fiddle Demo

这会给你:

|  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