[SQL ] MySQL GROUP BY 的問題
今天有三個 table
// 計畫
tbl_project
t_id int
t_name varchar
有一筆資料
t_id = 1
t_name = 'project a'
---------------------------------
// 計畫訂單
tbl_project_order
po_id int
po_name varchar
po_quantity int
po_price int
p_id int // tbl_project fk
有兩筆資料
po_id = 1
po_name = 'order 1'
po_quantity = 1
po_price = 300
p_id = 1
po_id = 2
po_name = 'order 2'
po_quantity = 1
po_price = 500
p_id = 1
---------------------------------
// 計畫細節
tbl_project_detail
pd_id int
pd_name varchar
p_id int // tbl_project fk
有兩筆資料
pd_id = 1
pd_name = 'detail 1'
p_id = 1
pd_id = 2
pd_name = 'detail 2'
p_id = 1
今天要統計每個 project 訂單的總額,SQL 語法如下
SELECT p.p_name, SUM(po.po_quantity*po.po_price) AS poMoney FROM tbl_project `p` LEFT JOIN tbl_project_order `po` ON po.p_id = p.p_id GROUP BY p.p_id;
結果會出現
p_name = 'project 1'
poMoney = 800
數字是對的,但另外要加入這個 project 的統計,於是修改結構如下
SELECT p.p_name, SUM(po.po_quantity*po.po_price) AS poMoney, COUNT(pd.pd_id) AS pdCount FROM tbl_project `p` LEFT JOIN tbl_project_order `po` ON po.p_id = p.p_id LEFT JOIN tbl_project_detail `pd` ON pd.p_id = p.p_id GROUP BY p.p_id;
結果出現了
p_name = 'project 1'
poMoney = 1600
pdCount = 4
正確應該是 poMoney = 800 pdCount = 4,因為 LEFT JOIN 的關係所以 poMoney 重複了兩次,pdCount 重複了四次,請問該怎麼下才是正確的
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.134.11.173
※ 編輯: chan15 來自: 220.134.11.173 (04/17 00:24)