Tengo dos mesas, una para aperturas y la otra para reservas. Una entrada en la tabla de reservas siempre se refiere a una apertura y puede haber múltiples reservas para cada apertura. Me gustaría extraer todas las aberturas que tienen reservas diferentes de bookingType 'C'
.Consulta SQL: ¿Dónde me estoy equivocando?
E.g.
si una abertura tiene 3 reservas de tipo A, B y C, no debería aparecer en el resultado
si una abertura tiene sólo reservas de tipo A y B, se debe mostrar en el resultado
lo siguiente es lo que he intentado pero no es correcta, ya que falla para el ejemplo 1:
select op.id, bo.id
from opening op
left join booking bo on bo.openingId = op.id
where bo.bookingType != 'C';
Ésta es la consulta completa refiriendo a intervalos de tiempo:
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'))
lo que solía llamar bookingType
era en realidad un intervalo de tiempo definido a través de las dos columnas arrivalDate
y departureDate
: en el ejemplo anterior que necesito toda la aberturas que NO tienen una reserva entre 20th June 2009
y 27th June 2009
.
¿Tiene la estructura de su mesa? Esto también suena como tarea. –
abertura TABLA Identificación del INT NOT NULL Descripción VARCHAR (60) PRIMARY KEY (id) reserva TABLA Identificación del INT NOT NULL, openingId INT NOT NULL, arrivalDate DATETIME NOT NULL, DepartureDate DATETIME NOT NULL, PRIMARIA KEY (id) Estoy tratando de extraer todas las aberturas disponibles para un determinado intervalo de fechas (por ejemplo, del 20-06-2009 al 27-06-2009) –
¿dónde está el bookingType en el ejemplo anterior? – akf