• ベストアンサー

MySQLの構文についてです・・・

いつもお世話になります。 MySQLの構文について悩んでおりますので、アドバイス頂けたらと思います。 環境 MySQL4.0 チームテーブルには各球団の情報があります。 team_table team_id | チーム名  1 | ジャイアンツ  2 | ドラゴンズ  3 | タイガース  4 | ベイスターズ  5 | スワローズ  6 | カープ ----------------------- スケジュールテーブルには対戦カードと審判割当があります。 レコードにはteam_idが入力されています。 schedule_table  id | 対戦チーム1 | 対戦チーム2 | 審判チーム1 | 審判チーム2 |   1 |   1   |   2   |   3   |   4   |  2 |   3   |   4   |   5   |   6   |  3 |   5   |   6   |   1   |   2   | --------------------------------------------------------------- この2つのテーブルから  id | 対戦チーム1 | 対戦チーム2 | 審判チーム1 | 審判チーム2 |  1 |ジャイアンツ |ドランゴンズ | タイガース | ベイスターズ|  2 | タイガース | ベイスターズ| スワローズ |  カープ  |  3 | スワローズ |  カープ   |ジャイアンツ |ドランゴンズ | と表示したいのですが、 INNER JOIN で結合するにも4回行わなければならないのと、フィールド名がかぶってしまうので、もっとスマートな方法がないかと考えております。 大変未熟なためアドバイスを頂けたらと思いますので、よろしくお願い致します。2人くらいの方からアドバイス頂けましたら、迅速に締め切り、ポイント付与させて頂きます。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>INNER JOIN で結合するにも4回行わなければならない 普通にそれでよろしいかと。 そもそもSQLで表を作る必要があるのでしょうか? たとえばWEB上で表示したいなどの用途であれば PHPなどで対比表を配列で用意する手もあるでしょうけど

maicching
質問者

お礼

早速の回答ありがとうございます。 通常はそれで問題ないのですね。 将来的に対戦カードが蓄積されることと、PHPのソースも簡素にしたかったので何か良い方法はないかと考えておりました。

その他の回答 (1)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

4回JOINするしかありませんし、それが「スマートでない」とも 思いません。フィールド名が重複することはSQLでは頻繁に起こる ことで、同じ用途の項目なら、むしろ同じ名前にするのが普通です。 そのため、別名(Alias)を付けて区別します。 A.チーム名 AS 対戦チーム,B.チーム名 AS 審判チーム・・・など

maicching
質問者

お礼

早速のご回答ありがとうございます。 やはりINNER JOINの4回繰り返しが妥当なようですね。 なるべく繰り返し作業が減らせればと思ったのですが・・・ これで安心して作業に取り組めます。 ありがとうございました。

関連するQ&A