【问题标题】:mistake in MySql queryMySql 查询错误
【发布时间】:2012-11-09 14:14:54
【问题描述】:

我想创建一个包含统计数据的团队列表,所以我使用了 2 个函数,每个函数包含 2 个不同的数据库查询:

protected function getListQueryweqw() {
    // Create a new query object.
    $db = $this->getDbo();
    $query = $db->getQuery(true);
    $query_string = '';
    $query_string .= 'a.*, COUNT(w.id) AS played_games, SUM(w.team_goals) AS goals,';
    $query_string .= "COUNT(w.match_status = 'draw') AS draw,";
    $query_string .= "COUNT(w.match_status = 'win' ) AS win,";
    $query_string .= "COUNT(w.match_status = 'lose') AS lose,";
    $query_string .= "SUM(w.team_points) AS points, SUM(w.goal_lost) AS goal_lost, w.*";

    // Select the required fields from the table.
    $query->select($query_string);
    $query->from('`#__footsal_teams` AS a');
    $query->join('LEFT', '`#__footsal_resaults` AS w on w.id_team = a.id');

    return $query;
}

protected function getListQuery() {
    // Create a new query object.
    $db = $this->getDbo();
    $query = $db->getQuery(true);
    $query_string = '';
    $query_string .= 'a.*, COUNT(SELECT id FROM `#__footsal_resaults` WHERE id_team = a.id) AS played_games, ';
    $query_string .= "SUM(SELECT team_goals FROM `#__footsal_resaults` WHERE id_team = a.id) AS goals,";
    $query_string .= "COUNT(SELECT id FROM `#__footsal_resaults` WHERE match_status = 'draw') AS draw,";
    $query_string .= "COUNT(SELECT id FROM `#__footsal_resaults` WHERE match_status = 'win') AS win,";
    $query_string .= "COUNT(SELECT id FROM `#__footsal_resaults` WHERE match_status = 'lose') AS lose,";
    $query_string .= "SUM(SELECT team_points FROM `#__footsal_resaults` WHERE id_team = a.id) AS points, SUM(SELECT goal_lost FROM `#__footsal_resaults` WHERE id_team = a.id) AS goal_lost";

    // Select the required fields from the table.
    $query->select($query_string);
    $query->from('`#__footsal_teams` AS a');

    return $query;
}

但是,这两个查询似乎都不起作用,我得到的错误开始是:

JDatabaseMySQLi::query: 1064 ......

谁能告诉我哪里出错了?

【问题讨论】:

  • JDatabaseMySQLi::query: 1064...开始错误

标签: mysql joomla joomla2.5


【解决方案1】:

你的东西与此类似,只是做了一些调整。

protected function getListQueryweqw() {
    $db = JFactory::getDBO();
    $query = $db->getQuery(true);
    $query_string = '';
    $query_string .= 'a.*, COUNT(w.id) AS played_games, SUM(w.team_goals) AS goals,';
    $query_string .= "COUNT(w.match_status = 'draw') AS draw,";
    $query_string .= "COUNT(w.match_status = 'win' ) AS win,";
    $query_string .= "COUNT(w.match_status = 'lose') AS lose,";
    $query_string .= "SUM(w.team_points) AS points, SUM(w.goal_lost) AS goal_lost, w.*";

    $query->select($query_string);
    $query->from('#__footsal_teams AS a');
    $query->join('LEFT', '#__footsal_resaults AS w on w.id_team = a.id');


    return $db->setQuery($query);
}

protected function getListQuery() {
    $db = JFactory::getDBO();
    $query = $db->getQuery(true);
    $query_string = '';
    $query_string .= 'a.*, COUNT(SELECT id FROM #__footsal_resaults WHERE id_team = a.id) AS played_games, ';
    $query_string .= "SUM(SELECT team_goals FROM #__footsal_resaults WHERE id_team = a.id) AS goals,";
    $query_string .= "COUNT(SELECT id FROM #__footsal_resaults WHERE match_status = 'draw') AS draw,";
    $query_string .= "COUNT(SELECT id FROM #__footsal_resaults WHERE match_status = 'win') AS win,";
    $query_string .= "COUNT(SELECT id FROM #__footsal_resaults WHERE match_status = 'lose') AS lose,";
    $query_string .= "SUM(SELECT team_points FROM #__footsal_resaults WHERE id_team = a.id) AS points, SUM(SELECT goal_lost FROM #__footsal_resaults WHERE id_team = a.id) AS goal_lost";

    $query->select($query_string);
    $query->from('#__footsal_teams AS a');

    return $db->setQuery($query);
}

【讨论】:

    【解决方案2】:

    好的,我解决它

    protected function getListQuery() {
        // Create a new query object.
        $db = $this->getDbo();
        $query = $db->getQuery(true);
        $query_string = '';
        $query_string .= 'a.*, (SELECT COUNT(id) FROM `#__footsal_resaults` WHERE id_team = a.id) AS played_games, ';
        $query_string .= "(SELECT SUM(team_goals) FROM `#__footsal_resaults` WHERE id_team = a.id) AS goals,";
        $query_string .= "(SELECT COUNT(id) FROM `#__footsal_resaults` WHERE match_status = 'draw' AND id_team = a.id) AS draw,";
        $query_string .= "(SELECT COUNT(id) FROM `#__footsal_resaults` WHERE match_status = 'win' AND id_team = a.id) AS win,";
        $query_string .= "(SELECT COUNT(id) FROM `#__footsal_resaults` WHERE match_status = 'lose' AND id_team = a.id) AS lose,";
        $query_string .= "(SELECT SUM(team_points) FROM `#__footsal_resaults` WHERE id_team = a.id) AS points, (SELECT SUM(goal_lost) FROM `#__footsal_resaults` WHERE id_team = a.id) AS goal_lost";
    
        // Select the required fields from the table.
        $query->select($query_string);
        $query->from('`#__footsal_teams` AS a');
    
        return $query;
    }
    

    【讨论】:

      猜你喜欢
      • 2011-11-13
      • 1970-01-01
      • 2016-03-29
      • 2014-03-06
      • 2012-05-27
      • 1970-01-01
      • 1970-01-01
      • 2011-08-18
      • 2011-09-02
      相关资源
      最近更新 更多