Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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

?


Наверх

Титульная страница Поиск, карта сайта Написать письмо