1

クエリが必要です。結合されたテーブルを持つ1つのフィールドを合計しようとしています。2番目のテーブルにないレコードもあります。したがって、このレコードの合計はゼロである必要があります。ただし、クエリは2番目のテーブルにあるレコードのみを合計します。

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
4

3 に答える 3

1

次のような理由で、2番目のテーブルからの値のゼロを取得するIFNULL(sd.fiyat,0)代わりに使用する必要があります。sd.fiyatNULLLEFT 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
于 2012-10-02T10:45:31.737 に答える
1

ここに簡単な例があります、あなたは助けるかもしれません:http ://sqlfiddle.com/#!2/41481/1

于 2012-10-02T10:51:01.363 に答える
0

これは古いスレッドですが、同じ問題を解決するために数時間を費やしました。

私のクエリには、フィルターとSUM関数の2つの結合があります。私はSQLの専門家ではありませんが、これにより、結合されたテーブルに合計する行がない場合でも、結果を表示するという望ましい結果を得ることができました。

合計が何もない場合でも結果を表示するための私にとっての鍵は、GROUPBYでした。理由はまだ100%わかりません。

この記事に基づいて、2つのタイプの結合が選択されました-1つのクエリでのMySQL複数結合?

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
于 2014-03-10T01:59:10.553 に答える