0

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 に割り当てたので、それを使用してチーム テーブルに参加できると考えました。このエラーを修正するために誰かが私を正しい方向に向けることができますか? 前もって感謝します。

4

2 に答える 2

0

それを作るための簡単な関数を作りました。それは働いています。

// get variable
$area = $_GET['area'];

// function
function cases($a) {

    $sel_dash = mysql_query("SELECT * FROM sys_dash WHERE area = '$a'");
    $dados = mysql_fetch_assoc($sel_dash);
    $page = $dados['page'];

    return $page;
}

// call function with the variable
$page = cases($area);

取得した値が正しいかどうかをテストするには、「return」を「echo」に変更すると、変数がコードに書き込まれます。

私が使用するテーブルは次のとおりです。

CREATE TABLE `sys_dash` (
    `id` INT(10) NOT NULL AUTO_INCREMENT,
    `area` VARCHAR(250) NOT NULL,
    `page` VARCHAR(250) NOT NULL,
    PRIMARY KEY (`id`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
ROW_FORMAT=DEFAULT

私が助けてくれることを願っています!

これは PHP の CASE クラスですが、必要な機能は同じです。

ありがとう

ドニアーニ

于 2016-04-04T14:37:16.653 に答える