MySQL クエリに関する質問があります。高校のフットボールのスコアを追跡するテーブルを作成しました。次のようになります。
CREATE TABLE `games` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`home_team` int(11) NOT NULL,
`visitor_team` int(11) NOT NULL,
`home_score` tinyint(4) NOT NULL,
`visitor_score` tinyint(4) NOT NULL,
`quarter` tinyint(4) NOT NULL,
`week` tinyint(2) NOT NULL,
`game_date` date NOT NULL,
`game_time` time NOT NULL,
`complete` tinyint(4) NOT NULL DEFAULT '0',
`stadium_id` int(11) NOT NULL,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=151;
私が行っているクエリでは、チームの ID を使用して比較しています。指定されたチーム ID のみが敗北したチームの ID 値を取得したいと考えています。これまでの私のクエリは次のとおりです。
SELECT
CASE
WHEN games.home_team != ? AND (games.home_score > games.visitor_score) THEN games.home_team
WHEN games.visitor_team != ? AND (games.home_score < games.visitor_score) THEN games.visitor_team
END AS id, teams.class_id, classes.name
FROM games
INNER JOIN teams ON id = teams.id
INNER JOIN classes ON teams.class_id = class.id
WHERE games.complete = 1
PHP MyAdmin でこのクエリを実行すると、次のエラーが表示されます。
#1052 - Column 'id' in on clause is ambiguous
PDO の execute() を使用しているので、? はチーム ID 値を表します。CASE ステートメントの結果を id に割り当てたので、それを使用してチーム テーブルに参加できると考えました。このエラーを修正するために誰かが私を正しい方向に向けることができますか? 前もって感謝します。