- 締切済み
group by句
色々と試行錯誤してやっていますが、なかなか自分の 思うような結果が得られないためご質問させて下さい。 テーブルが全部で3つあります。 テーブルA id name 1 巨人 2 西武 テーブルB id name 1 小笠原 2 ラミレス 3 中島 4 片岡 テーブルC id テーブルAID テーブルBID 背番号 1 1 1 30 2 1 2 10 3 2 3 3 4 2 4 8 テーブルを結合し、テーブルCにある 背番号をテーブルAid,テーブルBidを元に sumしたいのですがうまくいきません。 以下がそのSQLになります。 (1)サブクエリーを使ったSQL この場合値が重複されて表示されてしまいます。 select a.name,b.name,c.name, (select sum(背番号) from tableC c where c.テーブルAId = a.id group by c.テーブルAid ), (select sum(背番号) from tableC c where c.テーブルBid = bid group by c.テーブルBid ) from tableC c inner join tableA a on a.id = c.テーブルAid inner join tableB b on b.id = c.テーブルBid (2) select a.name,b.name,c.name, (select sum(背番号) from tableC c where c.テーブルAId = a.id ), (select sum(背番号) from tableC c where c.テーブルBid = bid ) from tableC c inner join tableA a on a.id = c.テーブルAid inner join tableB b on b.id = c.テーブルBid group by c.テーブルAid 重複はされないのですが、group byが一つのみなので ちゃんとした出力がされません。 他にやり方があるのかもしれませんが、お分かりになる方が いらっしゃいましたら、ご教授お願い致します。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- seimurakam
- ベストアンサー率61% (21/34)
a.name b.name 背番号 ------------------------------------------------------------ 巨人 小笠原 30 巨人 ラミレス 10 西武 中島 3 西武 片岡 8 求めているのは上記のような形でしょうか? >テーブルを結合し、テーブルCにある >背番号をテーブルAid,テーブルBidを元に >sumしたいのですがうまくいきません。 この場合、データをsumする必要はありません。 [SQL] select a.name ,b.name ,c.背番号 from tableC c join tableA a on a.id = c.tableAid join tableB b on b.id = c.tableBid 3テーブルの結合で躓いた…? って思っては見たものの結合条件はあっているから そうではなさそうですね。 もしかして3次元的な集計をしようとしているのでしょうか? 補足情報を求めます。
- chukenkenkou
- ベストアンサー率43% (833/1926)
>テーブルCにある背番号をテーブルAid,テーブルBidを元にsumしたい どういう結果を得たいのか、提示できませんか? 使用しているのは、ここのカテゴリ通りMySQLですか? バージョンは?
お礼
ご連絡遅くなりました。 プログラムでやるようにしました。 ありがとうございました。