- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:2つのテーブルでの集計)
2つのテーブルでの集計の方法とSQL文の使い方について
このQ&Aのポイント
- 2つのテーブルでの集計を行いたい場合、LEFT JOINを使用してテーブルを結合することができます。SUM関数を使ってA_idとB_idの金額を合計し、5000以上のデータのみを抽出することも可能です。
- SQL文の中でSUM関数やHAVING、WHEREを適切に使うことが重要です。SUM関数を使用してA_idとB_idの金額を合計し、HAVING句を使って合計金額が5000以上のデータのみを抽出することができます。
- MySQLのクライアントバージョンは5.0.45ですが、SUM関数やHAVING、WHEREなどの使い方はバージョンに依存せず使うことができます。適切なSQL文を組み合わせてデータを抽出することができます。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
とりあえずこんなん? SELECT 名前,SUM(T2.金額) AS A_金額,SUM(T3.金額) AS B_金額,SUM(T2.金額)+SUM(T3.金額) AS AB_金額 FROM T1 LEFT JOIN T2 ON T1.A_id=T2.A_id LEFT JOIN T3 ON T1.B_id=T3.B_id GROUP BY T1.名前 HAVING AB_金額>=5000
お礼
yambejpさん、回答ありがとうございますー やっぱりこういう感じになりますよねー!! HAVING とWHERE の使い分けが何だか良くわからなくて、判断付かない 状態だったので、問題がひとつ明確になって非常に助かりました。 もう一つ質問しても良いでしょうか SUM(T2.金額) AS A_金額 このあたりの処理なのですが A_idのみ・B_idのみ の場合でも、SUMは動作しますか? 今のところ計算結果が空の状態になっておるのです 上の例の場合だと AAAAの合計が空で、CCCCは表示OK CASE というのを使えば出来るのかなと思って色々やってみたのですが データ自体の有無を判別させる方法がわからん! と早速 壁にぶち当たっておりました… NOT EXIST とかで何とかするものなのでしょうか。。。 宜しければ 追加の質問についてもご教授頂けますか??
補足
追加の質問させて頂きましたが、自力でなんとか解決できました! sum(IF(A_金額 > 0,A_金額,0))+sum(IF(B_金額 > 0,B_金額,0)) as AB_金額 問合せの中にSUMやらIFやらが使えるのも知らなかったですよー 一つ勉強になりました またわからないことがありましたら、教えて下さい! 本当にありがとうございましたー