Probleme requete SQL BETWEEN Deux Date [Résolu]

Messages postés
15
Date d'inscription
vendredi 17 novembre 2006
Dernière intervention
16 février 2010
- - Dernière réponse : cs_nanina
Messages postés
6
Date d'inscription
vendredi 13 mai 2005
Dernière intervention
19 novembre 2010
- 19 nov. 2010 à 09:21
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
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
6069
Date d'inscription
dimanche 13 avril 2003
Dernière intervention
15 juillet 2011
1
Merci
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

Merci nhervagault 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de nhervagault
Messages postés
15
Date d'inscription
vendredi 17 novembre 2006
Dernière intervention
16 février 2010
0
Merci
Bonjour
Troop cool ça marche !!
Commenter la réponse de nag_yan
Messages postés
6
Date d'inscription
vendredi 13 mai 2005
Dernière intervention
19 novembre 2010
0
Merci
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
Commenter la réponse de cs_nanina

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.