0

販売テーブルから金額を合計し、ブランドごとにグループ化したいのですが、誰かがphpmysqlの正しいクエリを実行するのを手伝ってくれますか。

--- 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
4

3 に答える 3

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フィドルデモ

これはあなたに与えるでしょう:

|  PNAME | TOTALAMOUNT |
------------------------
|  Dalda |        2040 |
|  Habib |        2060 |
|   Sufi |        2080 |
| Toyota |        1050 |

注:をpname2番目のテーブルに格納する必要はありませんSale。すでに最初のテーブルに保存されているので削除しますProduct

于 2013-02-04T10:16:35.747 に答える
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を使用できます。

于 2013-02-04T10:16:46.217 に答える
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
于 2013-02-04T10:19:45.237 に答える