J'ai deux tables, une pour les ouvertures et l'autre pour les réservations. Une entrée dans la table des réservations se réfère toujours à une ouverture et il peut y avoir plusieurs réservations pour chaque ouverture. Je voudrais extraire toutes les ouvertures qui ont des réservations différentes de bookingType 'C'
.Requête SQL - Où vais-je me tromper?
E.g.
si une ouverture a 3 réservations de type A, B et C, il ne devrait pas apparaître dans le résultat
si une ouverture n'a que les réservations de type A et B, il doit montrer dans le résultat
Voici ce que je l'ai essayé, mais il est inexact car il échoue pour l'exemple 1:
select op.id, bo.id
from opening op
left join booking bo on bo.openingId = op.id
where bo.bookingType != 'C';
Voici la requête complète se référant à des intervalles de temps:
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'))
Ce que je l'habitude d'appeler bookingType
était en fait un intervalle de temps défini par les deux colonnes arrivalDate
et departureDate
: dans l'exemple ci-dessus je besoin de tous les ouvertures qui n'ont pas de réservation entre le 20th June 2009
et le 27th June 2009
.
Avez-vous la structure de votre table? Cela ressemble aussi à des devoirs. –
TABLE ouverture id INT NOT NULL Description VARCHAR (60) PRIMARY KEY (id) TABLE réservation id INT NOT NULL, openingId INT NOT NULL, arrivalDate DATETIME NOT NULL, departureDate DATETIME NOT NULL, PRIMAIRE KEY (id) J'essaie d'extraire toutes les ouvertures qui sont disponibles pour un certain intervalle de dates (par exemple du 20-06-2009 au 27-06-2009) –
où est le bookingType dans l'exemple ci-dessus? – akf