2017-03-15 10 views
-1

クエリを実行すると2倍の結果になります。最初はデータの3倍になっていたので、クエリを少し変更しましたが、今はテーブル内のすべてのレコードに対して倍(2倍)です。クエリの実行時にMySQLのダブル結果が返される

私のクエリは次のようになります。

SELECT 
    (q.totalExcl) AS totalExcl 
FROM 
    ex.ps_orders o LEFT JOIN 
    ex.ps_oxo_quotation q ON o.id_order = q.idOrder LEFT JOIN 
    ex.ps_sv_employee_meta m ON q.idEmployee = m.id_employee 
WHERE 
    idEmployee = 6 
     AND q.date_add >= '2017-01-01 00:00:00' 
     AND o.current_state IN (3, 4, 5, 9, 13, 15, 20, 22, 23, 24, 25, 121); 

そして、私の表は、この

╔══════════════╦ 
║ totalExcl ║ 
╠══════════════╬ 
║ 500.0000000 ║ 
║ 500.0000000 ║ 
║ 150.0000000 ║ 
║ 150.0000000 ║ 
║ 23.0000000 ║ 
║ 23.0000000 ║ 
╚══════════════╩ 

どのように見えるか私が欲しいのは、この1のようなものです:

╔══════════════╦ 
║ totalExcl ║ 
╠══════════════╬ 
║ 500.0000000 ║ 
║ 150.0000000 ║ 
║ 23.0000000 ║ 
╚══════════════╩ 

それがない作業時にI私のクエリからこの行を削除しますが、私は後でこの行が必要です(私はと呼ばれるこのテーブルからいくつかのテーブルを取得する必要があります後で):

LEFT JOIN 
    expoled.ps_sv_employee_meta m ON q.idEmployee = m.id_employee 

私は解決策がSUM(q.totalExcl /2)

+0

あなたはグループを必要としますが、あなたのニーズをあまり提供していないので、何を話すのは難しいです。私は注文IDフィールドで言うだろうか? – Nanne

+0

GROUP BY 'q.totalExcl'を実行すると、ダブベルの結果が返されます – Deniz

+0

別のテーブルの複数のレコードがex.ps_oxo_quotationテーブルの各レコードと一致するため、データが重複して表示されます。あなたは短時間で重複を排除するためにdistinctまたはgroup byを使用できますが、後で他のフィールドを追加する必要がある場合は、これらの解決策は持続しません。 – Shadow

答えて

1

SUM(.../2)にこのラインSUM(q.totalExcl)を変えた2が安全であることを正確に常に存在していることを前提としてい

それは何かの兆候がない場合、おそらくcurrent_state、おそらくdate_addと表示されています。 SELECTリストにその両方を追加することをお勧めします(GROUP BYまたはSUMなし)。これは、行が倍増する理由についての手掛かりを与えるでしょう。

SELECT DISTINCT ...は2倍を取り除きますが、違う方法で混乱する可能性があります.2つの行が合法的に値23を持っているとします。

LEFT JOINJOINに変更してください。

関連する問題