![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сделать такой запрос? [IB6.x, FB 1.0.3]
Карелин Артем © (2004-02-03 13:25:00)
Хочу значит переделать хранимую процедуру в запрос.
Смысл такой: идет цикл For select для главной таблицы, внутри которого идет запрос select first(1) из подчиненной таблицы.
Как сделать джойн, который выведет одну таблицу и к каждой записи добавит первую (по заданному порядку сортировки разумеется) запись из дочерней таблицы. А если дочерних записей нет, то Null на этом месте.
Карелин Артем (2004-02-03 14:15:00) [1]
Johnmen © (03.02.04 14:11) [5]
Действительно. Как-то не приходила мысля использовать Max по отнешению к датам(у меня даты в order by). А зря.
Johnmen (2004-02-03 14:11:00) [2]
>Карелин Артем ©
>Это будет первая при определенном порядке сортировки
А значит можно использовать агрегатные ф-ии типа MIN/MAX. Вместо first...
:)
Карелин Артем (2004-02-03 14:08:00) [3]
Johnmen © (03.02.04 13:58) [3]
Это будет первая при определенном порядке сортировки. Ну и завязаны по ключам таблицы.
Johnmen (2004-02-03 13:58:00) [4]
>Карелин Артем ©
Смысл получения 1 записи неясен... Есть ли критерий того, что эта первая запись именно та, которая нужна ?
Если есть (а иначе это бессмысленно), то этот критерий можно отобразить в where при соединении таблиц.
Sandman25 (2004-02-03 13:28:00) [5]
select ...
from main,
secondary s1
where main.id = s1.id // связь
and not exists
(select 1
from secondary s2
where s2.id = main.id // связь
and s2.field < s1.field // сортировка
)
Sandman25 (2004-02-03 13:28:00) [6]
Если нужны и NULL, то переделать на left join