Я пытаюсь создать представление в Oracle, чтобы показать все номера в отеле, которые не забронированы.Ошибка Oracle union
Если они забронированы, там будет запись в RoomBasket. Поэтому я стараюсь выбрать все номера не в RoomBasket между датами проверки и проверки (RoomBasket.datein, RoomBasket.dateout)
Но запрос продолжал возвращать 0 результатов, когда я использовал внутренние соединения и внешние (влево/вправо) соединения , Я думаю, это потому, что он не присоединился к таблице дат, поэтому он будет иметь 0 результатов. Итак, теперь я пытаюсь сделать «Union to the Room» таблицу, в которой есть запись обо всех комнатах, так как я думаю, что выберете все номера, а затем отмените те, которые были забронированы?
Я не могу получить синтаксис правильно, и я играл с нагрузками форм этого запроса:
CREATE VIEW availability AS
(SELECT * FROM RoomBasket rb
WHERE TO_DATE(SYSDATE, 'yyyymmdd')
NOT BETWEEN TO_DATE(rb.datein, 'yyyymmdd') AND TO_DATE(rb.dateout, 'yyyymmdd')
UNION (SELECT r.id room, rt.type type, rt.price price FROM Room r, RoomType rt)
);
Но если это работает я получаю 0 результат, и если он не работает, я получаю ошибки синтаксиса , На данный момент ошибка:
блок запроса имеет неправильное число столбцов результата
Не используйте 'SELECT *' в первом запросе, фактически перечислите нужные столбцы. «UNION» требует одинаковое количество столбцов во всех запросах. – Taryn
@bluefeet Хорошо получилось, что он работает спасибо! – Paul