[SQL ] MySQL GROUP BY 的問題

看板Database作者 (ChaN)時間11年前 (2013/04/17 00:24), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
今天有三個 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)
文章代碼(AID): #1HRNiW2y (Database)