Форум программистов, компьютерный форум, киберфорум
Наши страницы
Базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
Rider98
11 / 11 / 12
Регистрация: 06.05.2015
Сообщений: 419
1

Выборка по максимальной дате для данных - SQL

21.05.2017, 01:18. Просмотров 1935. Ответов 9
Метки нет (Все метки)

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

Таблица в виде:
ID | Дата прохождения | ID Автомобиля | Статус (пройден не пройден)

Решил делать так:
Сразу получаю список всех автомобилей которые вообще не проходили техосмотр.
Это сделал отдельным запросом через NOT IN получил автомобили которые вообще не были на техосмотре.
Дальше сделать выборку последних записей о каждом автомобиле, и тех у кого статус не пройден сразу отравляем на техосмотр.
И в конце, у тех у кого последний статус пройден, высчитываем, если на то скоро, то отправляем.

Сейчас пытался сформировать запрос, что бы получить последний техосмотр для каждого автомобиля который посещал станцию, при этом нужно сохранить статус последнего техосмотра, что бы в дальнейшем видеть прошел он техосмотр или нет. Как это сделать бьюсь об стену не могу понять... Через Group by можно объединить, но тогда уже статус последней записи не сохраняется.

Подскажите, как вообще можно такое реализовать?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2017, 01:18
Ответы с готовыми решениями:

Выборка записи по максимальной дате и времени
Здасте. Подскажите как в представленном коде (под id_order = 963 в таблице d_document имеются две...

Выборка данных по дате
Есть таблица ctreate table peoplecoming( today timestamp, people varchar(50) ) Поле today...

Выборка строк по максимальной дате из нескольких таблиц
Здравствуйте! Помогите пожалуйста! Есть три таблицы Имущ (список имущества), СоотвРаспол...

Выборка данных Access из таблицы SQL
Здравствуйте друзья! У меня в SQL есть таблица с данными "obzvon", в ней есть столбец с ФИО...

Выборка данных через SQL запрос
Доброго времени суток...Есть база данных. Пользователь вводит данные, регистрируется, потом...

9
Kukstyler
Mayorista nolimpiopescado
811 / 532 / 172
Регистрация: 02.04.2009
Сообщений: 2,362
21.05.2017, 01:51 2
SQL
1
2
3
4
5
6
7
8
9
10
 SELECT A.ID_Автомобиля, A.Дата_прохождения, A.Статус
   FROM myTable A
  WHERE A.ID IN (SELECT B.ID
                   FROM myTable B
                  WHERE B.Дата_прохождения = (SELECT MAX(Дата_прохождения)
                                                FROM myTable
                                               WHERE ID = B.ID
                                             )
                )
 ;
0
YuryK
1034 / 851 / 334
Регистрация: 08.12.2016
Сообщений: 3,283
21.05.2017, 10:40 3
Лучший ответ Сообщение было отмечено Rider98 как решение

Решение

Kukstyler, лишний подзапрос зачем? Разве нее достаточно
SQL
1
2
3
4
5
6
SELECT B.*  
FROM myTable B             
WHERE 
  B.Дата_прохождения = (
    SELECT MAX(Дата_прохождения)  FROM myTable  WHERE ID = B.ID
)
1
Kukstyler
Mayorista nolimpiopescado
811 / 532 / 172
Регистрация: 02.04.2009
Сообщений: 2,362
21.05.2017, 10:49 4
YuryK, точнякс. Ступилс! Ночью писал полу-сонный
0
21.05.2017, 10:49
YuryK
1034 / 851 / 334
Регистрация: 08.12.2016
Сообщений: 3,283
21.05.2017, 10:59 5
Kukstyler, такой скрипт будет работать не на всех СУБД, на MS SQL он выдает все записи myTable, ничего не фильтруя
0
Kukstyler
Mayorista nolimpiopescado
811 / 532 / 172
Регистрация: 02.04.2009
Сообщений: 2,362
21.05.2017, 11:22 6
YuryK, а первый, мой?

Я работаю с DB2 и Oracle, с MS не знаком особенно. Но по любому странно, что не работает.
0
Rider98
11 / 11 / 12
Регистрация: 06.05.2015
Сообщений: 419
21.05.2017, 13:29  [ТС] 7
Цитата Сообщение от YuryK Посмотреть сообщение
лишний подзапрос зачем? Разве нее достаточно
Попробовал ваш запрос, возвращает все записи.
Делаю в аксесе.
0
YuryK
1034 / 851 / 334
Регистрация: 08.12.2016
Сообщений: 3,283
21.05.2017, 13:31 8
я ошибся немного в запросе. Все работает
0
Rider98
11 / 11 / 12
Регистрация: 06.05.2015
Сообщений: 419
21.05.2017, 13:32  [ТС] 9
Цитата Сообщение от YuryK Посмотреть сообщение
я ошибся немного в запросе. Все работает
Всё, в конце ид автомобиля надо, затупил, спасибо!
0
YuryK
1034 / 851 / 334
Регистрация: 08.12.2016
Сообщений: 3,283
21.05.2017, 13:34 10
там просто должно быть не
SQL
1
WHERE ID = B.ID
а
SQL
1
WHERE ID_Автомобиля = B.ID_Автомобиля
тогда будет работать, как задумывалось, в т.ч. на MS SQL
0
21.05.2017, 13:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.05.2017, 13:34

Выборка строк по максимальной дате
Всем привет! Есть таблица вида: Широта | Долгота | Транспорт | Дата 1 | 1 | ...

С# SQL выборка по дате
В таблице Shorts колонка MeasureDate имеет тип datetime Пишу запрос DateTime curr =...

Выборка данных по дате DevExpress xtraGrid
Всем привет. Подскажите, пожалуйста, как поменять формат выборки на dd.MM.yyyy. Нужные мне данные...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru