![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите сделать sql-запрос [D3, IB4.x]
Слэш2 © (2003-10-29 16:26:00)
Есть таблица:
ID VER FAMILY POS
10 1 Иванов 1
12 1 Петров 2
10 2 Иванов 3
10 3 Иванов 4
12 5 Петров 5
Нужно выбрать все записи с максимальным(ver), т.е. результат нужен:
10 3 Иванов 4
12 5 Петров 5
Вот так я выбираю нужные ID,VER:
select id,max(ver) from table group by id
Как результат этого запроса подставить в select * from table where ......... ?
Слэш2 (2003-10-29 22:12:00) [1]
Всем огромное спасибо. Бардака никакого нет :) Таблиц никаких не надо :)
Sandman25 (2003-10-29 17:30:00) [2]
Да, вероятно ему нужна еще одна таблица с самой последней версией.
Johnmen (2003-10-29 17:09:00) [3]
Просто у автора бардак со структурой таблицы :)
Sandman25 (2003-10-29 16:47:00) [4]
А нет, я соврал. Твой тоже сработал, я даже не ожидал, что такой синтаксис поддерживается :)
Sandman25 (2003-10-29 16:45:00) [5]
[4] Johnmen © (29.10.03 16:38)
>id не ключ :)))
Я знаю :)
Я протестил, мой вариант тоже работает. Причем, под Informix только мой вариант и работает.
PS. Знаю, знаю, у автора как раз IB :)
Johnmen (2003-10-29 16:38:00) [6]
>Слэш2
select * from table where
ver in (select max(ver) from table group by id)
>Sandman25 ©
id не ключ :)))
Sandman25 (2003-10-29 16:35:00) [7]
Второй вариант очень медленный, берите лучше первый.
Sandman25 (2003-10-29 16:32:00) [8]
2)select * from table t1
where not exists
(select * from table t2
where t1.id = t2.id
and t1. ver< t2. ver
)
Sandman25 (2003-10-29 16:31:00) [9]
1)select * from table t1
where ver =
(select max(ver) from table t2
where t1.id = t2.id
)
2)select * from table t1
where not exists
(select * from table t2
where t1.id = t2.id
and t1.id < t2.id
)