![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поиск по несуществующему полю [D7, IB6.x]
dest81 © (2010-11-12 13:39:00)как можно реализировать в firebird запрос типа:
select col1,col1+50 as col2 from table1 where col2>100
пишет unknown column
dest81 (2010-11-12 15:18:00) [1]пасибо поробую
Sergey13 (2010-11-12 15:01:00) [2]> [5] Sergey13 © (12.11.10 14:58)
вернее
HAVING sum(t2.total)>20
нельзя ничего делать с псевдонимами полей.
Anatoly Podgoretsky (2010-11-12 14:59:00) [3]> dest81 (12.11.2010 14:52:04) [4]
total_sum>20 надо перевести во Where
Sergey13 (2010-11-12 14:58:00) [4]> [4] dest81 (12.11.10 14:52)
HAVING total_sum>20
dest81 (2010-11-12 14:52:00) [5]
> но если в лоб и в общем случае, то
>
> select col1,col1+50 as col2 from table1 where col1+50>100
я наверно неудачный пример привел, поробую по другому:
Есть две таблицы:
1. table1
id integer,
name varchar
2. table2
id2 integer,
id integer,
total decimal(10,2)
такой запрос работает:
select t1.id,t1.name,sum(t2.total) as total_sum from table1 t1
left join table2 t2 on t1.id=t2.id group by .....
надо добавить фильтрацию по total_sum типа:
select t1.id,t1.name,sum(t2.total) as total_sum from table1 t1
left join table2 t2 on t1.id=t2.id and total_sum>20 group by .....
выдает unknown column, как это можно обойти?
Sergey13 (2010-11-12 14:39:00) [6]Логически в данном случае конечно самое правильное
> [2] sniknik © (12.11.10 14:36)
но если в лоб и в общем случае, то
select col1,col1+50 as col2 from table1 where col1+50>100
sniknik (2010-11-12 14:36:00) [7]> select col1,col1+50 as col2 from table1 where col2>100
=
select col1,col1+50 as col2 from table1 where col1>50
Anatoly Podgoretsky (2010-11-12 13:49:00) [8]> dest81 (12.11.2010 13:39:00) [0]
Но несуществующему полю выдает несуществующие значения
SELECT Col1,NULL from table1