У меня есть два стола, один для открытий, а другой для заказов. Запись в таблице бронирования всегда относится к открытию, и для каждого открытия может быть несколько заказов. Я хотел бы извлечь все отверстия, у которых есть заказы, отличные от bookingType 'C'
.SQL Query - Где я ошибаюсь?
E.g.
, если отверстие имеет 3 заказы типа А, В и С, он не должен отображаться в результате
, если отверстие имеет только заказы типа А и В, он должен показать вверх в результате
Ниже то, что я пытался, но это не правильно, как он не для примера 1:
select op.id, bo.id
from opening op
left join booking bo on bo.openingId = op.id
where bo.bookingType != 'C';
Вот полный запрос со ссылкой на временные интервалы:
select op.id, bo.id
from opening op
left join booking bo on bo.openingId = op.id
where ((bo.arrivalDate < '2009/06/20' AND bo.departureDate <= '2009/06/20') OR
(bo.arrivalDate >= '2009/06/27' AND bo.departureDate > '2009/06/27'))
То, что я называл bookingType
был фактически временной интервал определяется через две колонки arrivalDate
и departureDate
: в приведенном выше примере, мне нужно все которые НЕ ДОПУСКАЮТСЯ между 20th June 2009
и 27th June 2009
.
У вас есть структура таблицы? Это также звучит как домашнее задание. –
открытие Таблица ID INT NOT NULL Описание УАКСНАК (60) первичный ключ (идентификатор) Таблица бронирование ID INT NOT NULL, openingId INT NOT NULL, ArrivalDate DATETIME NOT NULL, departureDate DATETIME NOT NULL, ПЕРВИЧНЫЙ KEY (id) Я пытаюсь извлечь все отверстия, доступные для определенного интервала дат (например, с 20-06-2009 по 27-06-2009) – 2009-06-12 12:30:43
где находится тип бронирования в приведенном выше примере? – akf