Вопрос подзапроса в MySQL - PullRequest
1 голос
/ 07 февраля 2012

Я пытаюсь получить 3 лучших рейтинга уникальных игроков за последние n месяцев.При попытке выполнить запрос я получаю сообщение об ошибке:

Неизвестный столбец 'f.SC_Date' в 'выражении where'

Ниже приведен мой запрос

SELECT * from   scores f
WHERE
  SC_Id IN (
          SELECT SC_Id FROM (
                  SELECT SC_Id from scores where DATE_FORMAT( SC_Date, "%Y%m" ) = DATE_FORMAT( f.SC_Date, "%Y%m" ) AND US_Id != 0  ORDER BY SC_Score DESC 
                   LIMIT 3
          ) AS u )ORDER BY DATE_FORMAT( SC_Date, "%Y%m" ) DESC, SC_Score DESC

1 Ответ

0 голосов
/ 07 февраля 2012

Вы не можете использовать f.SC_Date во внутреннем запросе таким образом - помните, что сначала будет запущен бит в скобках, а затем будет запущен бит снаружи.

Вам потребуетсяобъявить scores f внутри этого оператора select, чтобы это работало.

Я ожидаю, что оно вам вообще не нужно - что-то вроде:

SELECT * from   scores f
WHERE
  SC_Id IN (
          SELECT SC_Id FROM (
                  SELECT SC_Id from scores where DATE_FORMAT( SC_Date, "%Y%m" ) = DATE_FORMAT( SC_Date, "%Y%m" ) AND US_Id != 0  ORDER BY SC_Score DESC 
                   LIMIT 3
          ) AS u )ORDER BY DATE_FORMAT( SC_Date, "%Y%m" ) DESC, SC_Score DESC

Должно работать, если я не 'Я ошибаюсь в ваших намерениях здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...