Probleme requete SQL BETWEEN Deux Date [Résolu]

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

3 réponses

Répondre au sujet
nhervagault 6069 Messages postés dimanche 13 avril 2003Date d'inscription 15 juillet 2011 Dernière intervention - 15 févr. 2010 à 22:04
+1
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de nhervagault
nag_yan 15 Messages postés vendredi 17 novembre 2006Date d'inscription 16 février 2010 Dernière intervention - 16 févr. 2010 à 13:57
0
Utile
Bonjour
Troop cool ça marche !!
Commenter la réponse de nag_yan
cs_nanina 6 Messages postés vendredi 13 mai 2005Date d'inscription 19 novembre 2010 Dernière intervention - 19 nov. 2010 à 09:21
0
Utile
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.