MySQL SQL文


下記条件のSQL文を御願します。

2つのテーブルがあります。

《テーブルA》
id | name | class | grade
《テーブルB》
id | teacher

テーブルA.class と テーブルB.id は関係性を持ってます。

行いたいこと:
テーブルBのIDとTEACHERをテーブルAのGRADEに入っているデータ毎の「個数」がほしい。

例:
テーブルA
1 | 岡田 | 1 | A
2 | 伊藤 | 1 | A
3 | 古城 | 2 | B
4 | 田中 | 1 | B

テーブルB
1 | 伊佐地
2 | 平

SQL実行:
1 伊佐地 A 2
1 伊佐地 B 1
2 平 B 1

回答の条件
  • URL必須
  • 1人3回まで
  • 登録:
  • 終了:2011/03/19 10:58:04
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:deflation No.1

回答回数1036ベストアンサー獲得回数126

ポイント60pt

下記のようなSQL文でいかがでしょうか。

SELECT tableB.id, tableB.teacher, tableA.grade, count(name) from tableA INNER JOIN tableB ON tableA.class = tableB.id GROUP BY tableA.grade, tableB.teacher;

http://q.hatena.ne.jp/

質問者が未読の回答一覧

 回答者回答受取ベストアンサー回答時間
1 MAS3 40 35 2 2011-03-19 08:52:16
2 chuken_kenkou 722 671 54 2011-03-19 09:59:20
  • id:chuken_kenkou
    質問を見て回答を準備していたら、いきなり回答0件状態で締め切られたり。労が報われないですね。。。

    念のためですが、deflationさんのSQLは、MySQLの拡張機能で動いています。
    http://dev.mysql.com/doc/refman/5.1/ja/group-by-hidden-fields.html

    標準SQLや、MySQLを除く主要なRDBMSでは、

    GROUP BY tableA.grade, tableB.teacher



    GROUP BY tableA.grade, tableB.id, tableB.teacher

    と、SELECT句で選択している tableB.id列も、GROUP BYに指定する必要があります。

    もし、

    GROUP BY tableA.grade, tableB.teacher

    とした場合と、

    GROUP BY tableA.grade, tableB.id, tableB.teacher

    とした場合で結果が異なる(tableB表のid列、teacher列が一対で一意にならない)場合は、SELECT句で指定した tableB.id列の値は、何が返るかMySQLは保証していません。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません