Probleme requete SQL BETWEEN Deux Date [Résolu]

Signaler
Messages postés
15
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
16 février 2010
-
Messages postés
6
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
19 novembre 2010
-
Bonjour a tous ,

J'ai beau chercher pas de solution a l'horizon, je me tourne alors vers vous, je suis sur que c'est facile pour vous, mon problèmes et le Suivant :

Voila j'ai (02) Tables , Une Chambre et l'autre planning:

Planning
------------------------------------------------
ID_PLANNING int(11)
CHB_ID int(11)
CLI_ID int(11)
DateDebut date
DateFin date
CHB_PLN_CLI_NB_PERSADULTES smallint(6)
CHB_PLN_CLI_NB_PERSENFANTS smallint(6)
CHB_PLN_CLI_RESERVE decimal(1,0)
CHB_PLN_CLI_QUITER decimal(1,0)
CHB_PLN_CLI_OCCUPE decimal(1,0)
id_formule int(11)

Chambre :
---------------------------------------------------

CHB_ID int(11)
CHB_NUMERO smallint(6)
CHB_TYPE int(11)
CHB_ETAGE int(11)
CHB_COUCHAGE smallint(6)
CHB_POSTE_TEL char(3)
CHB_TV char(3)
CHB_CLIMATISEUR char(3)
CHB_INTERNET char(3)
OBSERVATION char(150)


je veux faire une différence entre les deux table ( EXCEPT ) alors pour cela j'ai fait sa :

SELECT DISTINCT t_chambre.CHB_ID
FROM t_chambre
WHERE NOT EXISTS (SELECT CHB_ID FROM tj_chb_pln_cli WHERE t_chambre.CHB_ID = tj_chb_pln_cli.CHB_ID AND ....... )

et maintenant je veux que a la place des ............. je veux une condition genre BETWEEN entre deux date DateDebut et DateFin de la table planning pour que le résultat soit que les Chambres Libre de DateDebut a DateFin ;



Merci a tous

3 réponses

Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
31
Salut

SELECT DISTINCT t_chambre.CHB_ID
FROM t_chambre
WHERE NOT EXISTS (SELECT CHB_ID FROM tj_chb_pln_cli 
WHERE t_chambre.CHB_ID = tj_chb_pln_cli.CHB_ID AND 
(@ParamDebut BETWEEN DateDebut  AND DateFin 
OR 
@ParamDateFin BETWEEN DateDebut AND DateFin
OR
(@ParamDebut <= DateDebut AND @ParamFin >= DateFin) )
-- reservé pendant plus que la période
-- avant la date de début et apres la date de fin


Ce style de requete devrait fonctionner

Bon dev
Messages postés
15
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
16 février 2010

Bonjour
Troop cool ça marche !!
Messages postés
6
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
19 novembre 2010

Bonjour à tous,

Je viens avec ma requête qui ne me donne pas le résultat escompté. Au fait, dans ma table reservation j'ai une salle qui est réservée pour la période du 18.11.10 au 18.11.10. Avec select * from reservation; // Ok j'arrive à trouver la salle n°3 mais malheureusement pas avec la requête qui suit:

select count(RESERVATION.id) as compte from RESERVATION where ( (to_date('18/11/10','dd.mm.yy') between RESERVATION.debut and RESERVATION.fin) or (to_date('18/11/10','dd.mm.yy') between RESERVATION.debut and RESERVATION.fin )) and RESERVATION.salle ='salle3';

Voici la structure de ma table:
Create table RESERVATION
(
id number(10) not null,
debut date not null,
fin date not null,
salle varchar2(100 char) not null,
details varchar2(100 char) not null
);

Je dois faire la recherche avant d'insérer une nouvelle réservation. Je suis sous Oracle et java.
Je trouve que la requête postée par nhervagault correspond bien au moins mais je sais pourquoi?

Merci d'avance pour aide