Probleme requete SQL BETWEEN Deux Date

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

3 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
15 févr. 2010 à 22:04
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
1
nag_yan Messages postés 15 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 16 février 2010
16 févr. 2010 à 13:57
Bonjour
Troop cool ça marche !!
0
cs_nanina Messages postés 6 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 19 novembre 2010
19 nov. 2010 à 09:21
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
0
Rejoignez-nous