Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Вопрос-Ответ Новый топик    Ответить
 составить sql запрос для...  [new]
Impossible
Member

Откуда:
Сообщений: 2
Приветствую!
помогите плиз решить такую задачку. Есть база данных с такой структурой:
Фамилия Дата прививки
Иванов 2007
Иванов 2006
Петров 2005
Петров 2004
...................................
Требуется получить таблицу, в которой для каждого чела будет только одна запись - дата последней прививки, в данном случае должны получить
Иванов 2007
Петров 2005

К примеру для Иванова можно получить дату так:
select max(date) from table where name = 'Иванов'.

Есть предчувствие что можно это сделать для каждого чела в базе используя подзапросы, но конкретно ничего не получилось.
30 ноя 07, 22:48    [4990008]     Ответить | Цитировать Сообщить модератору
 Re: составить sql запрос для...  [new]
Софтверный проктолог
Member [заблокирован]

Откуда: Москва
Сообщений: 2230
Не нужны тут подзапросы.

select surname, max(year)
from t
group by surname
30 ноя 07, 23:52    [4990125]     Ответить | Цитировать Сообщить модератору
 Re: составить sql запрос для...  [new]
Impossible
Member

Откуда:
Сообщений: 2
Извиняюсь, неверный пример получился :(
Ближе к реальности вот так -
ID surname date
102832 Ivanov 2007
678989 Ivanov 2005
678979 Petrov 2004

Нужно получить ID (уникальный) для каждого чела при условии максимальной даты. При этом есть список ID. Т.е. вот так -
SELECT ID, surname FROM table WHERE ID = '678989' AND
-- вот тут мы и должны выбрать по макимальным датам.
Проблема в том, что искомый ID - это 102832. Но он не проходит по первому условию. Нам нужно использовать ID = '678989' как входной параметр и вернуть 102832, поскольку второе условие - это максимальная дата. От первого условия избавиться нельзя, нужно именно найти айдишник с максимальной датой по другому айдишнику той же записи. Такое можно провернуть одним запросом?
1 дек 07, 11:08    [4990489]     Ответить | Цитировать Сообщить модератору
 Re: составить sql запрос для...  [new]
Софтверный проктолог
Member [заблокирован]

Откуда: Москва
Сообщений: 2230
Самый простой способ:
select t.* from (select surname, max(date_) as date_ from table_ group by surname) g, table_ t
where g.surname = t.surname and g.date_ = t.date_
1 дек 07, 11:30    [4990503]     Ответить | Цитировать Сообщить модератору
Все форумы / Вопрос-Ответ Ответить