2011-04-15 37 views
1

這應該很容易。相信我,我一直在研究這個好幾個小時。我查詢:MYSQL:JOIN make SUM double

SELECT not_piece.pid, part.name AS 'Part Name', SUM(qty_left) AS 'In Stock' 
FROM not_piece 
JOIN part ON not_piece.pid = part.pid 
GROUP BY part.name; 

只有兩張桌子,not_piece和零件。

select qty_left 
from not_piece 
where pid='M-MP-007r8'; 

返回5

由於part.name在零件表中出現兩次(這很好),總和爲10,而不是5

如何使這個連接,而不加倍總和?

謝謝。

+0

我會GROUP BY part.name,not_piece.pid – Dalen 2011-04-15 21:37:07

回答

2
SELECT t.pid, p.name AS 'Part Name', t.InStock AS 'In Stock' 
    FROM (SELECT pid, SUM(qty_left) AS InStock 
       FROM not_piece 
       GROUP BY pid) t 
     INNER JOIN part p 
      ON t.pid = p.pid 
+0

太謝謝你了! – 2011-04-15 21:51:55

1

有了您GROUP BY,嘗試通過您的主鍵分組,PID:

SELECT not_piece.pid, part.name AS 'Part Name', SUM(qty_left) AS 'In Stock' 
FROM not_piece 
JOIN part ON not_piece.pid = part.pid 
GROUP BY part.pid;