2017-05-11 57 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