0 / 0 / 0
Регистрация: 05.11.2013
Сообщений: 27
|
||||||
1 | ||||||
Возможно ли это вообще запросом выбрать?24.05.2016, 22:14. Показов 1080. Ответов 8
Метки нет (Все метки)
Есть таблица с техникой. И таблица с тех. осмотрами техники. Нужно выбрать технику с минимальной датой, которая больше текущей, если же у какого-либо элемента таблицы с техникой нет подходящих этому условию осмотров либо их нет вообще, то нужно вывести запись этого элемента, но поле с датой сделать null.
Вот мой запрос:
0
|
24.05.2016, 22:14 | |
Ответы с готовыми решениями:
8
Кто может это переработать для андроида? И вообще это возможно? Возможно ли это вообще в Word? Как найти правильные числа. И возможно ли это вообще? Delphi + Windows 10 = С чего начинать? (Это вообще возможно)? |
3499 / 2083 / 742
Регистрация: 02.06.2013
Сообщений: 5,078
|
||||||
24.05.2016, 22:27 | 2 | |||||
Сообщение было отмечено Despodd как решение
Решение
1
|
0 / 0 / 0
Регистрация: 05.11.2013
Сообщений: 27
|
|
24.05.2016, 22:36 [ТС] | 3 |
Спасибо большое. Ох какие же у меня скудные знания sql: я даже не понимаю как изложенная Вами конструкция работает.
0
|
3499 / 2083 / 742
Регистрация: 02.06.2013
Сообщений: 5,078
|
|
24.05.2016, 22:42 | 4 |
Сообщение было отмечено Despodd как решение
Решение
Дело поправимое - Чудесный оператор CROSS APPLY
1
|
43 / 43 / 11
Регистрация: 04.04.2012
Сообщений: 122
|
|||||||||||
24.05.2016, 23:18 | 5 | ||||||||||
Despodd, Функция GETDATE() возвращает значение типа Дата, его не нужно дополнительно конвертировать в Дату.
А Ваша конструкция Service.date>= GETDATE() or Service.date<GETDATE() мне вообще непонятна. Эта строка всегда возвращает значение ИСТИНА. Ваш запрос можно записать в таком виде:
Или еще изящнее:
Да, и DISTINCT там явно лишний. Хотя он не мешает. Добавлено через 13 минут Да нормальные знания. Только имейте в виду, что значение NULL не получится сравнить с чем-то не NULL. Поэтому сравнение с текущей датой нужно вынести в предложение LEFT JOIN ... ON (<вот сюда>), либо использовать функцию ISNULL(), которая значению NULL назначает значение не NULL, как бы "по умолчанию".
0
|
0 / 0 / 0
Регистрация: 05.11.2013
Сообщений: 27
|
|
24.05.2016, 23:29 [ТС] | 6 |
Хм, и вправду логично, но, когда я не преобразовывал, оно почему-то дату из БД считало меньше, чем дату, которую возвращает эта ф-ция. Вот я и подумал, что ф-ция Getdate возвращает значение datetime, а при сравнении неявно преобразует дату из бд в тип datetime и получается такая штука.
А это уже от безвыходности хотел выбирать из БД значения с датой больше текущего, а в обратном случае уже те, которые остались, чтобы потом программно уже вместо дат меньше текущей выставлять null. Хм, достаточно интересное решение и не сложное, но мне даже как-то и в голову не пришло, что в условии соединения таблиц может быть более одного условия. Добавлено через 3 минуты А это я забыл убрать, у меня изначально был вариант другой и там нужно было, чтобы оно не брало несколько записей для одного и того же элемента таблицы techn, а мой запрос выводил именно несколько. Добавлено через 33 секунды Всем огромное спасибо за решения да ещё и пояснения с ссылками на материал.
0
|
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,269
|
|
25.05.2016, 10:45 | 7 |
А с NULL, значит, получится?
С NULL надо использовать операторы IS NULL или IS NOT NULL
0
|
43 / 43 / 11
Регистрация: 04.04.2012
Сообщений: 122
|
|
25.05.2016, 11:30 | 8 |
Железная логика!
Что ж, отвечу: НЕ ЗНАЧИТ. Вот как хорошо, что Вы внимательно прочитали мое первое решение задачи ТС! Добавлено через 12 минут Кстати, и второе решение посмотрите. А то так и будете CROSS APPLY-и лепить, куда не нужно.
0
|
12 / 12 / 3
Регистрация: 20.11.2013
Сообщений: 123
|
||||||
25.05.2016, 11:35 | 9 | |||||
Не нужен
0
|
25.05.2016, 11:35 | |
25.05.2016, 11:35 | |
Помогаю со студенческими работами здесь
9
Нужно расшифровать, если это вообще как-то возможно Как записать в вектор структуру? Это вообще возможно сделать? как можно сделать это? если вообще возможно (не задача) Поломал голову над SQL запросом из 5-ти таблиц. Возможно ли это? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |