![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
SQL InterBase? [IB5.x, IB6.x]
volser © (2003-11-29 13:33:00)
Есть запрос:
select t1.f1,
(select t2.f2 from t2 where t2.id = t1.id) as f3
from t1
Как в этом запросе поставить ограничение на поле f3?
Johnmen (2003-12-03 15:23:00) [1]
select t1.f1, count(t2.f2)
from t1
join t2 on t1.id = t2.id
group by t1.f1
having count(t2.f2)>число
volser (2003-12-03 15:18:00) [2]
Необходимо
select t1.f1,
(select count(t2.f2) from t2 where t2.id = t1.id) as f3
from t1
Те записи где count > число
Fay (2003-12-03 15:17:00) [3]
Не устроит?
select t1.f1, count(t1.f2)
from t1 left join t2 on t1.id = t2.id
group by t1.f1
having count(t1.f2)>0
Johnmen (2003-12-03 15:13:00) [4]
1. Конкретно укажи, что необходимо
2. Столько раз, сколько записей в t1
volser (2003-12-03 15:08:00) [5]
-Мне надо немного не то:
select t1.f1,
(select count(t2.f2) from t2 where t2.id = t1.id) as f3
from t1
Если во вложеном селекте использовать агрегатные функции, то ни один из способов не подходит.
Может можно както используя HAVING?
-И еще вопрос если написать:
select t1.f1,
(select count(t2.f2) from t2 where t2.id = t1.id) as f3
from t1
where (select count(t2.f2) from t2 where t2.id = t1.id)>0
То в таком случае сколько раз выполняется запрос
?
(select count(t2.f2) from t2 where t2.id = t1.id)
Zacho (2003-11-30 19:11:00) [6]
> volser (29.11.03 13:33)
Самое ,imho, правильное решение:
select t1.f1,
t2.f2
from t1
LEFT JOIN T2 ON T2.ID=T1.ID
WHERE T2.F2 ...
Michail Dalakov (2003-11-29 13:51:00) [7]
В IB боюсь, что так просто не получится, но решение есть
можешь создать f3 как View и ставит свои ограничения, можешь использовть также не очень хорошее решение в лоб вместо ограничений на f3 ставить их на(select t2.f2 from t2 where t2.id = t1.id)
Nikolay M. (2003-11-29 13:39:00) [8]
Какого рода ограничение?
> select t1.f1,
> (select t2.f2 from t2 where t2.id = t1.id AND t2.f2 <= 10) as f3
> from t1
?