Переменная / псевдоним MySQL не используется - PullRequest
1 голос
/ 10 мая 2011

Итак, в данный момент я пытаюсь выбрать набор значений в зависимости от другого автоматически рассчитанного значения. (Звучит довольно сложно. Думаю, это не так уж плохо, и я не очень хорошо разбираюсь в английском)

Мой код SQL выглядит так:

SELECT ticket.ref_id AS id, COUNT( * ) AS reports, (COUNT(*)/post.views) AS
treshold,post.views AS views
FROM ticket, post
WHERE ticket.ref_id = post.id AND (reports/post.views)
GROUP BY ref_id
ORDER BY views,reports DESC

Проблема в том, что, когда я пытаюсь использовать treshold или report в предложении WHERE, запрос не выполняется и говорит, что в «списке полей» такого значения нет. Я знаю, в чем проблема, так это то, что MySQL, похоже, не позволяет использовать «самоопределяемые» поля в предложении WHERE, но мне это действительно нужно, и я не знаю, как это исправить.
Простое использование COUNT (*) также не работает, потому что не знает, что считать.

Может кто-нибудь помочь мне в этой проблеме? Я думаю, что это полностью базовый SQL, но я застрял на этом в данный момент.

1 Ответ

2 голосов
/ 10 мая 2011

Вы можете использовать предложение HAVING вместо WHERE для столбцов, на которые нет ссылок. Он менее производительный, но с этим справится.

http://dev.mysql.com/doc/refman/5.0/en/select.html

Предложение HAVING применяется почти последний, непосредственно перед отправкой клиент, без оптимизации. (LIMIT применяется после HAVING.)

Предложение HAVING может относиться к любому столбец или псевдоним, названный в select_expr в списке SELECT или во внешнем подзапросы и агрегировать функции

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