2 / 2 / 1
Регистрация: 15.08.2014
Сообщений: 30
|
||||||
1 | ||||||
Объединение двух связанных запросов26.11.2016, 23:18. Показов 1989. Ответов 7
Метки нет (Все метки)
Доброго времени суток.
Помогите пожалуйста с SQL запросом для выборки двух взаимосвязанных запросов. То есть в БД существуют 3 взаимосвязанных таблиц: Таблица "Заказ" - хранятся заказы с датами предполагаемых заказов и номера на которые поступили заказы Таблица "Номер" - список номеров гостиницы Таблица "Класс обслуживания" - дополнительный описательный список класса номера (стоимость и т.д. и т.п.) Так вот, мне нужно получить список номеров, которые свободны на заданный промежуток времени, в список должны включаться:
На данный момент я сделал получение списка свободных номеров без описания (просто номера):
Подскажите пожалуйста как вывести данные описания.
0
|
26.11.2016, 23:18 | |
Ответы с готовыми решениями:
7
Объединение двух запросов Создание запроса на объединение двух других запросов Программное создание связанных таблиц и экспорт запросов и форм Объединение нескольких связанных импортированных таблиц в 1 запрос |
2 / 2 / 1
Регистрация: 15.08.2014
Сообщений: 30
|
|
26.11.2016, 23:37 [ТС] | 2 |
Ох как я заработался уже...
Извините за странную тему само решённую. Решил как и обычно через INNER JOIN (А заработавшись пытался достать тоже через вложенный запрос). Не по теме: Бывает такое, строчишь вопрос в тему, уже на грани нажатия кнопки Создать, но потом погуляешь по комнате и решение само вспоминается.
0
|
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
|
|||||||||||
26.11.2016, 23:40 | 3 | ||||||||||
Сообщение было отмечено PandoraBox как решение
Решение
Надо связать таблицы Номер и [Класс обслуживания]. В SQL-виде во From
И кстати, временной период описан неверно. Номер может быть занят раньше даты в условии или освобожден после нее. Условие занятого в период номера подразумевает, что дата въезда меньше или равна наибольшей дате периода, а дата выезда больше или равна наименьшей дате периода
0
|
2 / 2 / 1
Регистрация: 15.08.2014
Сообщений: 30
|
||||||
27.11.2016, 13:10 [ТС] | 4 | |||||
Верно говорите, что в условии допущена ошибка, пригляделся и правда. Но ошибка не во временном интервале, а логическая, вместо захвата (AND) двумя BETWEEN мне надо было промежутки между датой выезда и приезда складывать (OR)
0
|
2 / 2 / 1
Регистрация: 15.08.2014
Сообщений: 30
|
||||||||||||||||||||
28.11.2016, 21:10 [ТС] | 6 | |||||||||||||||||||
Однако... Верно. Воспроизвёл ситуацию:
На деле, c датой: Желаемое прибытие - 02.11.2016 Желаемый съезд - 28.11.2016 Получилось так, что ваш код:
Но зато он учитывает ситуацию, когда желаемые дата и съезд - 11.1.2016 и 11.3.2016 соответственно. Возможно я обошёлся очередным топором, но я объединил наши условия, и они с изначальными проверками вроде как проходят:
0
|
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
|
|
28.11.2016, 21:50 | 7 |
Вы не дали свою базу. К сожалению. Поэтому привожу самодельную. 2 таблицы - Заказы, Номер с минимальным количеством полей. Только нужные для решения. Смотрим данные из т.Заказ. Там воспроизведены Ваши даты. Выполняем ЗапросДаты и видим, что Ваши возражения неверны. Запрос только с моим условием отсеивает занятые номера
1
|
2 / 2 / 1
Регистрация: 15.08.2014
Сообщений: 30
|
|
29.11.2016, 09:19 [ТС] | 8 |
Ахахах.
Да, вы были правы! Моя грубейшая ошибка - невнимательность. При тестировании вашего запроса я попросту вводил с клавиатуры его, в следствии чего мною была допущена ошибка - изменил местами даты которые вы приводите в своём запросе. Из-за невнимательности пришлось делать костыли. Спасибо большое!
0
|
29.11.2016, 09:19 | |
29.11.2016, 09:19 | |
Помогаю со студенческими работами здесь
8
Объединение запросов Объединение перекрестных запросов Объединение запросов в один, использование условия Объединение запросов или создание таблицы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |