2013-03-04 25 views
-3

Pleace help(建議)。mysql(新手) - 加入

冷杉查詢返回正確的結果。

SELECT zbotr.kultura,SUM(zbotr.ukupno), SUM(gnojidba.ukupkn_gn) FROM zbotr 

    LEFT JOIN gnojidba ON zbotr.parent_id=gnojidba.parent_id 

    WHERE zbotr.user_id=54 AND (zbotr.pend between '2012-01-01' AND '2012-12-31') 
    GROUP BY zbotr.kultura; 

screen1

當添加另一個表到查詢結果是:

SELECT zbotr.kultura,SUM(zbotr.ukupno), SUM(gnojidba.ukupkn_gn), SUM(operacije.uktros_ob) FROM zbotr 

    LEFT JOIN gnojidba ON zbotr.parent_id=gnojidba.parent_id 
    LEFT JOIN operacije ON zbotr.parent_id=operacije.parent_id 

    WHERE zbotr.user_id=54 AND (zbotr.pend between '2012-01-01' AND '2012-12-31') 
     GROUP BY zbotr.kultura; 

screen2

+0

什麼是你的問題/問題? – 2013-03-04 08:42:47

回答

0

你需要一個子查詢中進行計算。獲取無效值的原因是因爲表zbotr上的記錄有可能在表operacije上有多個匹配,導致其結果不正確。

SELECT zbotr.kultura, 
     SUM(zbotr.ukupno), 
     SUM(gnojidba.ukupkn_gn), 
     COALESCE(b.total, 0) total_uktros_ob 
FROM zbotr 
     LEFT JOIN gnojidba 
      ON zbotr.parent_id = gnojidba.parent_id 
     LEFT JOIN 
     (
      SELECT parent_id, SUM(uktros_ob) total 
      FROM operacije 
      GROUP BY parent_id 
     ) b ON zbotr.parent_id = b.parent_id 
WHERE zbotr.user_id = 54 AND 
     zbotr.pend between '2012-01-01' AND '2012-12-31' 
GROUP BY zbotr.kultura, b.total 

爲了進一步獲得更多的知識有關加入,請訪問以下鏈接:

+0

Tnx重播,但#1054 - '字段列表'中的未知列'a.total' – user1924728 2013-03-04 08:48:53

+0

對不起,這是'b.total'看到我更新的答案。 – 2013-03-04 08:49:25

+1

Tnx非常...我得到正確的結果沒有「,b.total」在查詢 – user1924728 2013-03-04 09:03:13