- ベストアンサー
SELECT/別テーブルのレコード数も取得したい
■環境 ・MySQL ■前提 ・テーブルA … idカラム ・テーブルB … A_idカラム ■やりたいこと ・テーブルAデータを取得する際、テーブルAレコードに応じて、テーブルB「A_idカラム」の数(レコード数)も取得したい ■取得イメージ例 ・テーブルA「全カラム」、「count」カラム ※「count」カラム … テーブルBにある「A_idカラム」の数 ■知りたいこと ・どこにも存在しないこの「count」カラムはどうやって作成したら良いでしょうか? ・全体のSQL文
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
私が思いついたのは、結合して GROUP BY を使う方法とSELECT句内のサブクエリを使う方法でした。 version 5.5.8 で確認しました。 ■ 結合して GROUP BY を使う方法 SELECT a.id, COUNT(b.A_id) AS count FROM table_a a LEFT OUTER JOIN table_b b ON(a.id = b.A_id) GROUP BY a.id; ■ SELECT句内のスカラサブクエリを使う方法 SELECT id, (SELECT COUNT(*) FROM table_b b WHERE a.id = b.A_id) AS count FROM table_a a;
その他の回答 (2)
- bin-chan
- ベストアンサー率33% (1403/4213)
先に全体のSQL文を書いたけど、あちこちに別名を使っています。 集計関数CountにもB_countと付けてます。予約語と同じはイヤなので。
お礼
補足ありがとうございます。 >集計関数CountにもB_countと付けてます。予約語と同じはイヤなので ・確かに関数Countと被っていますね ・質問した時点では、全く気が付きませんでした ・参考になりましたー
- bin-chan
- ベストアンサー率33% (1403/4213)
Select t1.*, t2.B_count From テーブルA t1 left join ( Select A_id, count(*) B_count from テーブルB ) t2 On t1.id = t2.A_id ;
お礼
回答ありがとうございました。 参考になりましたー
お礼
回答ありがとうございました。 何となく色々な書き方が出来るんだろうな、とは思っていたのですが、 実際に違うやり方で書かれたコードを確認することが出来たので、とても勉強になりましたー