Access 2003/ Запрос уникальных значений(усложненный)

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Rust_F
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 19.06.2007 (Вт) 12:55

Access 2003/ Запрос уникальных значений(усложненный)

Сообщение Rust_F » 30.07.2007 (Пн) 14:37

Есть таблица с 3-мя полями 1. счетчик 2. Name 3. DateTime
Предположим заполнена так:
Код: Выделить всё
1   A   01.01.2007
2   B   01.01.2007
3   C   01.01.2007
4   A   02.01.2007


Необходимо выбрать все уникальные Name с самой последней датой.

Выриант с "select Distinct Name, dateTime from table order by dateTime desc" не проходит, т.к. совокупность полей является уникальной и результат не отличается от изначальной таблицы.

В программе смог бы это сделать, но придется зацикливать выполнение запросов SQL.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 30.07.2007 (Пн) 15:14

select name, max(date)
from ...
group by name
Lasciate ogni speranza, voi ch'entrate.

Rust_F
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 19.06.2007 (Вт) 12:55

Сообщение Rust_F » 31.07.2007 (Вт) 5:35

Спасибо. А ведь понимал, что решение рядом, видимо заработался.

Rust_F
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 19.06.2007 (Вт) 12:55

Сообщение Rust_F » 31.07.2007 (Вт) 6:13

Да на поставленный вопрос ответ замечательный, но я некоректно поставил вопрос.
Дело в том что при большем кол-ве полей группировки не происходит.

Думал сделать что-то вроде select * from table1 where счетчик in (select name, max(date) from table1 group by name), но не получится так как в групповой выборке нет поля счетчик.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 31.07.2007 (Вт) 7:03

Разумеется.
Помедитируй над тем, какой именно счетчик надо включать в выборку, если для одной группы будет две одинаковых максимальных даты.
Ты хочешь неправильного.
Lasciate ogni speranza, voi ch'entrate.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 31.07.2007 (Вт) 7:49

Rust_F писал(а):но не получится так как в групповой выборке нет поля счетчик.


Похоже ты пытаешься написать следующее:

Код: Выделить всё
SELECT t1.* FROM table1 t1
    INNER JOIN (SELECT [Name], MAX([Date]) AS [Date] FROM table1 GROUP BY [Name]) t2 ON t1.[Name]=t2.[Name] AND t1.[Date]=t2.[Date]
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Rust_F
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 19.06.2007 (Вт) 12:55

Сообщение Rust_F » 31.07.2007 (Вт) 9:25

Andrey Fedorov большое спасибо, получилось. Хоть и думал о таком способе(через 2 таблицы), но знаний не хватило реализовать.


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 223

    TopList