2017-05-11 60 views
-1

我的SQL連接查詢出現問題。我查了其他建議的答案,並試圖將其應用於我的查詢,但它似乎並沒有工作。SQL加入給出錯誤結果(創建重複項)

我有這個疑問:

SELECT SUM(p.quantity) 
FROM stocktake_scans p 

LEFT JOIN (
SELECT stocktake_area_id 
FROM stocktake_areas 
WHERE stocktake_id =8592 AND area_checked = 1 
)d ON d.stocktake_area_id = p.stocktake_area_id 
LEFT JOIN (
    SELECT user_id 
    FROM stocktake_scan_edit 
    WHERE user_id =46521 
    )e ON e.user_id = p.stocktake_staff_id 
WHERE p.stocktake_staff_id = 46521 

,這讓我的42的結果,而我應該只得到6,什麼是從查詢中丟失?

+0

後的樣本數據和期望的輸出 –

+0

可以指教一下導致你是從簡單的查詢得到如下:SELECT SUM(p.quantity) FROM stocktake_scans p其中p.stocktake_staff_id = 46521 – jimmy8ball

+0

我得到的結果6當我使用簡化的查詢 – ArtleMaks

回答

1

我想你可能在你的連接表中有相同的ID的額外記錄,這是你得到多行返回的行,然後計算你的總和錯誤,請嘗試下面的內容。

SELECT SUM(p.quantity) FROM stocktake_scans p LEFT JOIN (SELECT distinct stocktake_area_id FROM stocktake_areas WHERE stocktake_id =8592 AND area_checked = 1)d ON d.stocktake_area_id = p.stocktake_area_id LEFT JOIN (SELECT distinct user_id FROM stocktake_scan_edit WHERE user_id =46521)e ON e.user_id = p.stocktake_staff_id WHERE p.stocktake_staff_id = 46521 
+0

謝謝你好,先生,就是這樣!我在stocktake_scan_edit中有多個user_id,因爲它不是主鍵(不能)。這似乎解決了問題! – ArtleMaks