簡體   English   中英

php mysql表2的數量和表1的字段組合

[英]php mysql sum amount of table2 and group by table one's field

我想從銷售表中總結金額,並希望按品牌分組,任何人都可以幫我正確查詢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
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小提琴演示

這會給你:

|  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 

您將只獲得在銷售表中有條目的品牌。

如果您想要所有品牌,即使沒有進入銷售表,也可以使用LEFT JOIN

COALESCE(SUM(amount, 0))

順便說一句,正如Mahmoud Gamal所指出的,你不需要表Sale中的pname。 我也不會將pcode用作“關系列”,而是使用產品ID。 因此,您可以刪除pcode和pname,並使用新列p_id。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM