647 / 100 / 11
Регистрация: 08.06.2015
Сообщений: 1,564
|
|
1 | |
Сложный запрос на выборку02.06.2018, 04:56. Показов 934. Ответов 7
Метки нет (Все метки)
Доброго утра, помогите сделать сложный запрос на выборку. В наведенном примере отображена таблица изменений поля. Нужно найти последнее изменение записи и вывести RecordID, ChangeDate, NewValue.
0
|
02.06.2018, 04:56 | |
Ответы с готовыми решениями:
7
сложный запрос (для меня сложный) Если нужно сделать запрос на добавление, зачем предварительно делать запрос на выборку? сложный запрос Сложный запрос |
647 / 100 / 11
Регистрация: 08.06.2015
Сообщений: 1,564
|
|
02.06.2018, 04:56 [ТС] | 2 |
Вложил БД.
0
|
647 / 100 / 11
Регистрация: 08.06.2015
Сообщений: 1,564
|
|
02.06.2018, 05:16 [ТС] | 3 |
Кроме всего нужно проверить есть ли записи NewValue = 5. Сделал через 3 запроса. Вопрос знатокам если таблица будет большая, то такой тройной запрос будет долго выполняться? Можно его как-то сократить?
0
|
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
|
|||||||||||
02.06.2018, 07:00 | 4 | ||||||||||
Возможны 2 понимания при данной постановке:
1. Найти максимальное значение ChangeDate и, если NewValue=5 в выбранной строке, то выполнить. SQL такого запроса (Запрос5)
1
|
647 / 100 / 11
Регистрация: 08.06.2015
Сообщений: 1,564
|
|
02.06.2018, 07:11 [ТС] | 5 |
Нужно проверить если последним действием было присвоено NewValue = 5, то в записи с найденным RecordID нужно произвести обновление.
Добавлено через 53 секунды Другими словами, если поставили статус с кодом 5 и в течении 5 рабочих дней он не изменился, нужно поставить статус с кодом 9 - просрочка. Добавлено через 2 минуты Я пытаюсь поймать последнее NewValue по дате для каждого RecordID
0
|
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
|
|
02.06.2018, 07:45 | 6 |
Правильно ли я понял? Поправьте если не так
1. Для каждого RecordID ищем NewValue = 5 2. Если найденная запись с максимальным значением ChangeDate для заданного RecordID, то в поле NewValue пишем 9 для найденной записи. Этого я не понял. И это условие противоречит всем остальным. Получается надо найти не последнее, а ПРЕДпоследнее значение с NewValue=5 и, если дата самого последнего отличается от предпоследнего на 5 дней, то менять статус. Где правда?
1
|
647 / 100 / 11
Регистрация: 08.06.2015
Сообщений: 1,564
|
|
02.06.2018, 09:38 [ТС] | 7 |
Нужно найти последнее по дате для каждого RecordID, если по последней дате стоит NewValue = 5 оставить. Другими стовами если последний установленный статус с NewValue = 5 все остальное игнорировать. Например был NewValue = 5, а потом стал 3 - этот RecordID не нужен.
0
|
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
|
||||||
02.06.2018, 12:20 | 8 | |||||
Может быть так?
1
|
02.06.2018, 12:20 | |
02.06.2018, 12:20 | |
Помогаю со студенческими работами здесь
8
Сложный запрос Сложный запрос сложный запрос(!) Сложный запрос на БД Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |