• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:php mysqlを使用してのリーグ表作成)

php mysqlを使用してのリーグ表作成

このQ&Aのポイント
  • php・mysqlを使用してリーグ戦表や順位表を作成する方法についてご教示ください。
  • 参考サイトのリーグ表と順位表を参考に、自動でソートされる順位表を作成したいです。
  • 順位表の内容はリーグ表の右側の表記となります。

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

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

何が必要か書き出すところから始めてみてください。 まず、チームを正規化したteamテーブルがいりますね。 とりあえず4チームつくりましょう。 create table team(team_id int not null primary key,team_name varchar(30)); insert into team values(1,"A"),(2,"B"),(3,"C"),(4,"D"); 試合結果を保存しておくテーブルがいりますね。 試合のidをプライマリとして、ホームチームのid、ホームチームの得点、アウェイチーム のid,アウェイチームの得点があればとりあえず大丈夫です。 create table taisen(id int not null primary key auto_increment,hometeam int,homepoint int,awayteam int,awaypoint int); insert into taisen (hometeam,homepoint,awayteam,awaypoint) values(1,3,2,2),(3,1,4,0),(1,0,3,2),(2,2,4,2),(1,1,4,2),(2,0,3,0),(2,1,1,2),(4,1,3,3),(3,5,1,2); これで、順位表をつくってみます。 select team_name チーム名 ,sum(homepoint>awaypoint)*3 +sum(homepoint=awaypoint) as 勝ち点 ,count(sub.team_id) as 試合数 ,sum(homepoint>awaypoint) as 勝ち数 ,sum(homepoint=awaypoint) as 引き分け ,sum(homepoint<awaypoint) as 負け数 ,sum(homepoint) as 得点 ,sum(awaypoint) as 失点 ,sum(homepoint) - sum(awaypoint) as 得失点差 from ( select hometeam as team_id,homepoint,awaypoint from taisen union all select awayteam as team,awaypoint,homepoint from taisen ) as sub left join team on sub.team_id=team.team_id group by sub.team_id order by 勝ち点 desc,得失点差 desc; 対戦表はちょっと応用になりますので、上記SQLの理解ができるようになってからでも 遅くないと思います

h199613
質問者

お礼

ご回答有難う御座います。 ややこしかったんですね。 自分の中でもう少し仕様を固めてから作りたいと思います。 作る際には上記を参考にさせていただきます。 有難う御座います。

関連するQ&A