Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не могу составить правильный запрос-выборку :(. 
:(
    Опции темы
Sanek81
  Дата 31.8.2007, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 30.5.2007

Репутация: нет
Всего: нет



Очень нужна помощь опытных программистов. Рассмотрим 3 поля из таблицы "Table". 
Первое поле - "ID" (счётчик), уникальное ключевое поле. Второе поле - "Код"(числовое), в котором допускаются повторения. Третье поле - "Дата" (дата/время), в нём тоже допускаются совпадения. В этой таблице каждому коду соответствует несколько различных дат. Мне просто кровь из носу необходимо отобрать все ID, соответствующие кодам с максимальными датами!

Делаю следующий запрос:

Код

SELECT ID, MAX(Дата)
FROM Table
GROUP BY Код;


И получаю ощибку, что нельзя включить в запрос поле ID , так как оно не является частью статистической функции Max, которую я использую чтобы отобрать максимальные даты, сгруппировав их по полю Код.  И как я только не пытался уже исхитриться, у меня ничего не выходит, а ведь каждая запись в таблице уникальна, и если выполнить данный запрос убрав из него ID, то он выдаёт результат, в виде набора записей, и по идее у каждой из этой записи свой уникальный ID, так вот у меня вопрос, как мне получить этот ID. Помогите пожалуйста!!! smile

Это сообщение отредактировал(а) Sanek81 - 31.8.2007, 22:35
PM MAIL   Вверх
comtat
Дата 31.8.2007, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1310
Регистрация: 2.5.2006
Где: Россия, Казань

Репутация: нет
Всего: 71



Код

SELECT ID, Дата  FROM Table t1
INNER JOIN (SELECT MAX(Дата) AS DateTT, t2.Код  FROM Table t2 GROUP BY Код) as t2 on t2.Код = t1.Код and t2.DateTT = t1.Дата



--------------------
Рожденный в СССР !!!
ExtJS - мой фреймворк 
PM   Вверх
Sanek81
Дата 31.8.2007, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 30.5.2007

Репутация: нет
Всего: нет



Спасибо, работает нормально!!! Я только не совсем понял что это всё означает, и даже аксесс загнулся, когда я попытался в виде конструктора это изобразить smile. Сначала мне показалось, что он неправильно работает поскольку он вернул немного больше записей чем нужно, но потом понял, что это из-за того, что в некоторых кодах даты повторяются, а по идее не должны (ошибка оператора). Так что ещё раз спасибо, и всё-таки у меня ещё маленький вопросик - можно как-нибудь более коротко это реализовать, или ТОЛЬКО вот так?

Это сообщение отредактировал(а) Sanek81 - 1.9.2007, 00:09
PM MAIL   Вверх
Akina
Дата 1.9.2007, 00:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(Sanek81 @  1.9.2007,  00:22 Найти цитируемый пост)
Я только не совсем понял что это всё означает


Все очень просто.

Сначала построй вот такой запрос:
Код

SELECT Table.Код, Max(Table.Дата) AS [Max-Дата]
FROM Table
GROUP BY Table.Код;

Дай ему имя, скажем, Query1.
Потом построй второй запрос:
Код

SELECT Table.ID, Table.Код, Table.Дата
FROM Query1 INNER JOIN [Table] ON (Query1.[Max-Дата] = Table.Дата) AND (Query1.Код = Table.Код);

Второй запрос дает то, что тебе нужно...

А теперь просто пойми, что сделал каждый из них, рассмотрев, что видно в построителе запросов.

Добавлено через 51 секунду
Цитата(Sanek81 @  1.9.2007,  00:22 Найти цитируемый пост)
маленький вопросик - можно как-нибудь более коротко это реализовать, или ТОЛЬКО вот так?

В рамках MS Access по-иному не получится.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »


 




[ Время генерации скрипта: 0.0459 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.