教えて!gooグレードポイントがdポイントに!

題名の通りですが、php・mysqlを使用してリーグ戦表や順位表を作成したいと思っています。
ですが、まったく構成が組みたっておらず、だいたいの構成がわかる方がいらっしいましたらご教示お願いします。

参考サイト
リーグ表
http://soccer.yahoo.co.jp/jleague/matrix/j1

順位表
http://soccer.yahoo.co.jp/jleague/standings/j1
です。

上記参考サイトリーグ表の右側が仙台~福岡までの表記がありますが、こちらは順位表の内容が入ります。
それ以外はこのままです。
順位表は自動でソートされていますが、ボタン一つでソートの並び替えができるという風に考えています。

以上になりますが、だいたいの構成がわかる方がいらっしゃいましたら宜しくお願いします。
簡単に説明している部分もありますが、ご質問いただければお答えさせていただきます。

教えて!goo グレード

A 回答 (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の理解ができるようになってからでも
遅くないと思います
    • good
    • 0
この回答へのお礼

ご回答有難う御座います。

ややこしかったんですね。

自分の中でもう少し仕様を固めてから作りたいと思います。

作る際には上記を参考にさせていただきます。

有難う御座います。

お礼日時:2011/09/12 23:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

教えて!goo グレード

人気Q&Aランキング