2013-03-02 2 views
3

Это продолжает прибывать с ошибкой, и я не могу понять, почему ...Mysql Запрос Дата публикации минус 7 дней

SELECT 
    i.user_id 
FROM (SELECT 
    SUM(us.score) AS score_sum, 
    us.user_id 
     FROM user_scores us 
     WHERE us.created >= DATE(DATE_SUB(NOW(),INTERVAL 7 DAY)) 
     GROUP BY us.user_id) AS i 
ORDER BY i.score_sum 
LIMIT 1 

исключение «CDbException» с сообщением

CDbCommand failed to execute the SQL statement: CDbCommand failed to prepare the SQL statement: SQLSTATE[HY000]: General error: 1 near "7": syntax error.

SQL-оператор выполняется был:

SELECT 
    i.user_id 
FROM (SELECT 
    SUM(us.score) AS score_sum, 
    us.user_id 
     FROM user_scores us 
     WHERE us.created >= DATE(DATE_SUB(NOW(),INTERVAL 7 DAY)) 
     GROUP BY us.user_id) AS i 
ORDER BY i.score_sum 
LIMIT 1 



<?php 

class WinnerCommand extends CConsoleCommand 
{ 
    public function actionSelect() 
    { 
     $sql = "SELECT i.user_id FROM 
      (SELECT SUM(us.score) AS score_sum, us.user_id FROM user_scores us 
      WHERE us.created >= DATE(DATE_SUB(NOW(),INTERVAL 7 DAY)) 
      GROUP BY us.user_id) AS i 
      ORDER BY i.score_sum 
      LIMIT 1"; 
     $user_id = Yii::app()->db->createCommand($sql)->queryScalar(); 
     echo $user_id; 
     return $user_id; 
    } 

}

?>

+0

Какой тип данных «создан» в вашей таблице? –

+2

Какой API вы это называете? Вы используете где-нибудь подготовленный оператор? –

+1

Если вы выполняете запрос напрямую, как он есть выше в клиенте, он запускается (похоже, он должен)? Какая версия MySQL? –

ответ

3

Я не могу объяснить проблему, но вы можете исключить подзапрос в выражении. Возможно, это поможет:

 SELECT us.user_id 
     FROM user_scores us 
     WHERE us.created >= DATE(DATE_SUB(NOW(), INTERVAL 7 DAY)) 
     GROUP BY us.user_id) 
     ORDER BY SUM(us.score) 
     LIMIT 1 
+0

Я не думаю, что мы можем использовать совокупность ('SUM') внутри ORDER BY close. – artragis

+1

@artragis. , , Это разрешено в MySQL и в любой другой базе данных, которую я знаю об этом, поддерживающей SQL. –

+0

Хорошо, я не знал этого, с удовольствием открыл эту тему. – artragis

Смежные вопросы