サッカーリーグの場合、2つのテーブルがあります。
- 「teams」は、すべてのチームを一意のエントリ('id'、'team_name')として一覧表示するテーブルです。
- 「matches」は、試合結果を示す表です。「home」列と「away」列に、各ゲーム結果を保存します。「home_team_id」および「away_team_id」は、チームテーブルへの関連付けです。
これは私のクエリがどのように見えるかです:
SELECT Teams, Sum(P) as 'Matches', Sum(W) as 'win', Sum(D) as 'draw', Sum(L) as 'lost',
SUM(Pts) as 'points'
FROM (
SELECT home Teams, 1 P,
IF (home > away,1,0) W,
IF (home = away,1,0) D,
IF (home < away,1,0) L,
CASE
WHEN home > away THEN 3
WHEN home = away THEN 1
ELSE 0
END PTS
FROM `matches`
UNION ALL
SELECT away Teams, 1,
IF (home < away,1,0),
IF (home = away,1,0),
IF (home > away,1,0),
CASE
WHEN home < away THEN 3
WHEN home = away THEN 1
ELSE 0
END
FROM `matches`
) AS ERG
GROUP BY Teams
ORDER BY SUM(Pts) DESC
ここで、チームテーブルのチーム名(teams.team_name)が必要です。これを達成するために、私は運が悪かったいくつかの結合ステートメントを試しました。
チームテーブルには、試合に参加しなかったチームを含めることができることは明らかです。これらのチームは、結果がゼロで表示される必要があります。
したがって、私はLEFTJOINを試しました。
SELECT team_name AS 'Teams'
FROM `teams`
LEFT JOIN matches ON ( teams.id = matches.home_team_id )
最後のORDER行の直後。エラーメッセージが表示されました。私はMySQL5.1.44を使用しているので、ネストされた選択は問題になりません。
何か案が?