Xpoint
   [напомнить пароль]

Именование полей в запросе

Метки: [без меток]
2007-03-12 12:08:01 [обр] Майя(0/2)[досье]
Можно ли использовать присвоенные полям имена в WHERE, например:
select count(id) as kolvo from users
where kolvo<>0
пробовала так написать, скл ругается
Но почему то в памяти отложилось, что подобное видела где то.
Подскажите, возможно ли это, и если да, то как правильно пишется?
Спасибо заранее.
спустя 8 минут [обр] Роман Чемисов(0/350)[досье]
Майя[досье]
Алиас может использоваться только в GROUP BY, ORDER BY, или HAVING :-(
спустя 13 минут [обр] Lynn «Кофеман»(0/571)[досье]
И уж тем более агрегирующие функции не могут быть использованы в WHERE.
спустя 19 часов [обр] Майя(0/2)[досье]

Понятно. Жаль. На самом деле может я неправильно спрашиваю, у меня запрос вида:

SELECT usapp.idu, users.fio,
SUM(CASE usapp.ida*usapp.visible
WHEN 4 THEN 1 ELSE 0 END) AS p1 FROM usapp
inner join users on usapp.idu=users.idu
where users.ido2=2 and users.visible=1
GROUP BY usapp.idu,users.fio,users.dat order by users.fio

в результате получается колонка p1, где стоят 0 или 1. Так вот мне нужно вывести только те строчки, в которых стоят 1.

спустя 3 часа 12 минут [обр] Закиров Руслан(12/343)[досье]
HAVING p1 = 1
спустя 28 минут [обр] Майя(0/2)[досье]
Закиров Руслан[досье] Гениально! Спасибо большое!
Правда вернувшись к проблеме именования полей в запросе так как Вы написали не работает
Ругается что неизвестно p1
Работает только так:
having SUM(CASE usapp.ida*usapp.visible
WHEN 4 THEN 1 ELSE 0 END)=1
Это конечно сильно усложняет запрос...
спустя 1 день 6 часов [обр] Кирилл [Kirk] Королев(88/673)[досье]
MSSQL? Алиасы только в order by, если не ошибаюсь. "Это конечно сильно усложняет запрос" - нет, просто загромождает.
спустя 2 месяца [обр] Леонид Валитов(0/3)[досье]
select idu, fio, dat from (
SELECT usapp.idu, users.fio,
SUM(CASE usapp.ida*usapp.visible
WHEN 4 THEN 1 ELSE 0 END) AS p1
FROM usapp
inner join users on usapp.idu=users.idu
where users.ido2=2 and users.visible=1
GROUP BY usapp.idu,users.fio,users.dat order by users.fio
) q
where p1=1
order by users.fio
правильность не проверял но принцип вроде должен быть понятен
спрятать за алиасом весь селект а снаружи только фильтровать и сортировать
Powered by POEM™ Engine Copyright © 2002-2005