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

をそして私は、クエリから欠落しているだけ6.何を得るべきである一方で、それは、私の42の結果を与えますか?

+0

ポストサンプルデータと所望の出力 –

+0

あなたは、以下の単純化されたクエリから取得している結果として何をアドバイスすることができます。p.stocktake_staff_id = 46521 – jimmy8ball

+0

が、私は結果を得るWHERE stocktake_scans PからSELECT SUM(p.quantity) 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

関連する問題