2012-10-02 126 views
1

我需要查詢。我試圖用連接的表格總和一個字段。有些記錄不在第二個表中。所以這個記錄總和應該是零。但是查詢只求和第二個表中的記錄。左外連接和總數問題

select s.*,sum(sd.fiyat) as konak from fuar_sozlesme1 s 
left outer join fuar_sozlesme1_detay sd on (sd.sozlesme_id = s.id) 

------編輯-------

我加group by到查詢和解決我的問題。這是新的;

select s.*,sum(sd.fiyat) as konak from fuar_sozlesme1 s 
left outer join fuar_sozlesme1_detay sd on (sd.sozlesme_id = s.id) 
group by sd.sozlesme_id 
+0

如果你的問題是可以理解的,你必須在幾分鐘內很多答案。請更好地解釋。 – fancyPants

+0

@tombom對不起,但我不怎麼解釋得更好。我只是想要一個查詢,加上一個字段與左join.But一些記錄不在第二個表中具有相同的id.So,這不是完全聯合查詢。我通過小組解決了我的問題。 –

回答

1

我thinik你需要使用IFNULL(sd.fiyat,0)而不是sd.fiyat獲得零爲NULL值從因爲LEFT JOIN像這樣第二個表來:

SELECT s.*, SUM(IFNULL(sd.fiyat, 0)) as konak 
FROM fuar_sozlesme1 s 
LEFT OUTER JOIN fuar_sozlesme1_detay sd ON sd.sozlesme_id = s.id 
GROUP BY s.someFields 
+0

好吧Mahmoud,「group by」解決了我的問題。非常感謝。 –

0

這是一箇舊線程,但我花了幾個小時試圖解決同一個問題。

我的查詢有兩個連接,一個過濾器和一個SUM函數。我不是SQL專家,但是這幫助我達到了期望的結果,即使連接的表沒有要求總和的行,也仍然顯示結果。

即使總和沒有任何結果,爲了顯示結果我的關鍵是GROUP BY。我仍然不是100%確定爲什麼。

這兩種類型的聯接是基於這篇文章的選擇 - MySQL Multiple Joins in one query?

SELECT registrations.reg_active, registrations.team_id, registrations.area_id, registrations.option_id, registrations.reg_fund_goal, registrations.reg_type, registrations.reg_fee_paid, registrations.reg_has_avatar, users.user_name, users.user_email, users.user_phone, users.user_zip, users.user_age, users.user_gender, users.user_active, SUM(IFNULL(donations.donation_amount,0)) as amt from registrations 
    INNER JOIN `users` 
     ON registrations.user_id = users.user_id 
     AND registrations.event_id = :event_id 
    LEFT OUTER JOIN `donations` 
     ON registrations.reg_id = donations.reg_id 
    GROUP BY donations.reg_id 
    ORDER BY users.user_name ASC