• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQLで2つの表を検索して集計する場合)

SQLで2つの表を検索して集計する方法

このQ&Aのポイント
  • SQLで2つの表を検索して集計する方法について質問です。
  • PostgreSQLとPHPでサイトを作っている場合、2つの表を結合して集計する方法が知りたいです。
  • 特に、「表1」のid名に応じて、「表2」のid_noの該当件数を取得する方法がわからないので、教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • don9don9
  • ベストアンサー率47% (299/624)
回答No.2

失礼しました。 COUNT(*)だと表2にレコードが存在しない場合も表1の1件を返してしまうので COUNT(*) → COUNT(表2.id_no) に変えてみて下さい。

xasisi2009
質問者

お礼

続けてのご回答ありがとうございます。 ご指摘の通り変更したところ、目的のとおり表示することができました! ありがとうございました!

その他の回答 (1)

  • don9don9
  • ベストアンサー率47% (299/624)
回答No.1

そういうのは二つのテーブルをJOINして集計するのが一般的な方法だと思います。 SELECT 表1.id, 表1.title, COALESCE(COUNT(*),0) FROM 表1 LEFT JOIN 表2 ON 表1.id = 表2.id_no GROUP BY 表1.id, 表1.title このような感じです。 (実際に動かしていないので、間違っていたらすみません)

xasisi2009
質問者

お礼

ご回答ありがとうございます! JOINして集計するものなのですね。 頂いたコードで実行したところ、ほぼ求めている情報を得ることが出来ました。 只、表2.id_noに該当のIDがない場合も1件としてカウントされてしまったため、 こちらを0件として取ることは出来ますでしょうか。 勉強不足でご迷惑をおかけします。。

関連するQ&A