|
MySQL.RU - Webboard
Вернуться
Внутри WHERE не работают вычисляемые поля? (Maxim) 06/11/2003 - 07:18:53
Re: Внутри WHERE не работают вычисляемые поля? (Maxim) 06/11/2003 - 07:29:06
Re: Внутри WHERE не работают вычисляемые поля? (Ahilles) 06/11/2003 - 10:05:05
Re: Внутри WHERE не работают вычисляемые поля? (Maxim) 06/11/2003 - 13:05:50
Re: Внутри WHERE не работают вычисляемые поля? (visor123) 06/11/2003 - 22:38:37
> Original message text:
> From: Maxim - 06/11/2003 - 07:18:53
> Subject:Внутри WHERE не работают вычисляемые поля?
> -----------------
> Имеем такую таблицу:
> CREATE TABLE `User` (
> `idUser` int(10) unsigned NOT NULL auto_increment,
> `chrLogin` varchar(32) NOT NULL,
> `chrPassword` varchar(32) binary NOT NULL,
> `dtBirthday` date default NULL,
> PRIMARY KEY (`idUser`)
> );
>
> Пробуем выполнить запрос:
> SELECT dtBirthday, YEAR(dtBirthday) AS intYear
> FROM User
> ORDER BY intYear
>
> Всё работает, как ожидается. Пробуем другой запрос:
>
> SELECT dtBirthday, YEAR(dtBirthday) AS intYear
> FROM User
> WHERE intYear>1980
>
> Выдает ошибку: "Unknown column 'intYear' in 'where clause'"
>
> Вопрос: это глюк, особенность реализации mysql, или особенность всего языка SQL?
>
From: Maxim - 06/11/2003 - 07:29:06
Subject:Внутри WHERE не работают вычисляемые поля?
-----------------
Конечно можно переписать запрос как:
SELECT dtBirthday, YEAR(dtBirthday) AS intYear
FROM User
WHERE YEAR(dtBirthday)>1980
Тогда всё хорошо работает но это просто для примера, в реальности мне нужны более сложные вычисления :)
SELECT dtBirthday, TO_DAYS(CONCAT(IF(DAYOFYEAR(CURDATE())<DAYOFYEAR(dtBirthday), YEAR(CURDATE()), YEAR(CURDATE())+1), '-', MONTH(dtBirthday), '-', DAYOFMONTH(dtBirthday)))-TO_DAYS(CURDATE()) AS intDaysToNextBirthday
FROM User
WHERE intDaysToNextBirthday BETWEEN 1 AND 3
Переписывать это выражение два раза мне кажется, как-то не правильно. Может мне кто-нибудь помочь?
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
11439
|
|