Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Requete sql

5 réponses
Avatar
Jacques TREPP
Bonjour,
je n'ai pas les idées très claires ce matin, et je cale sur une requete
"toute bète".
j'ai une table 'chamnres' avec numéro, libellé, etc
j'ai une table fiche_resa avec num_chambre, date, etc.
je voudrais récupérer toutes les chambres qui ne sont pas présentes dans
fiche_resa dans une fourchette de dates.
En clair, ça me sert à connaitres toutes les chambres disponibles pour une
période donnée.

j'ai essayé des inner outer... sans succes.

Merci de déboucher moncerveau embrumé. :D

--
Jacques TREPP
Albygest
3, rue Jean Mermoz
81160 ST-JUERY
(enlevez 'pasdespam' pour me joindre)

5 réponses

Avatar
Jacques TREPP
ça ressemblerait un peu à ça :

select no_chambre, libelle_chambre from chambres
where (select chambre from fiche_resa where chambre = no_chambre and dtresa
between '20080418' and '20080420') is null

l'erreur retournée est :
ERROR: more than one row returned by a subquery used as an expression

je suis en Postgresql, j'aurais du le dire tout de suite.
cordialement

--
Jacques TREPP
Albygest
3, rue Jean Mermoz
81160 ST-JUERY
(enlevez 'pasdespam' pour me joindre)
Avatar
Jerome PAULIN
Jacques TREPP a écrit :
ça ressemblerait un peu à ça :

select no_chambre, libelle_chambre from chambres
where (select chambre from fiche_resa where chambre = no_chambre and
dtresa between '20080418' and '20080420') is null

l'erreur retournée est :
ERROR: more than one row returned by a subquery used as an expression

je suis en Postgresql, j'aurais du le dire tout de suite.
cordialement




Deux manières possibles :

avec une sous requete :
select leschamps from latable where identifiant not in (select
identifiant where reservation=true)

avec un jointure :
selectleschamps from latable left join latablereservation where
reservation is null

gg
Avatar
Jacques TREPP
"Jerome PAULIN" a écrit dans le message de
news:48158ca5$0$879$
Jacques TREPP a écrit :
ça ressemblerait un peu à ça :

select no_chambre, libelle_chambre from chambres
where (select chambre from fiche_resa where chambre = no_chambre and
dtresa between '20080418' and '20080420') is null

l'erreur retournée est :
ERROR: more than one row returned by a subquery used as an expression

je suis en Postgresql, j'aurais du le dire tout de suite.
cordialement




Deux manières possibles :

avec une sous requete :
select leschamps from latable where identifiant not in (select identifiant
where reservation=true)

avec un jointure :
selectleschamps from latable left join latablereservation where
reservation is null

gg




Bonjour et merci.
j'ai réalisé la requete sous cette forme :

select distinct no_chambre, libelle_chambre from chambres
where (select chambre from fiche_resa
where chambre = no_chambre and dtresa between '20080418' and '20080420'
limit 1) is null

l'erreur vien du fait que ma première sous-requete pouvait retourner
plusieurs valeurs, d'où le LIMIT 1.

cordialement
--
Jacques TREPP
Albygest
3, rue Jean Mermoz
81160 ST-JUERY
(enlevez 'pasdespam' pour me joindre)
Avatar
Daniel
Jacques TREPP a écrit :
Bonjour,
je n'ai pas les idées très claires ce matin, et je cale sur une requete
"toute bète".
j'ai une table 'chamnres' avec numéro, libellé, etc
j'ai une table fiche_resa avec num_chambre, date, etc.
je voudrais récupérer toutes les chambres qui ne sont pas présentes dans
fiche_resa dans une fourchette de dates.
En clair, ça me sert à connaitres toutes les chambres disponibles pour
une période donnée.

j'ai essayé des inner outer... sans succes.

Merci de déboucher moncerveau embrumé. :D



Salut,

voici un exemple a adapté dans ton cas et qui fonctionne :

select chamresa.*, fiche_resa.* from chamresa left join fiche_resa on
chamresa.id= fiche_resa.id where fiche_resa is null

--
suivre ce lien pour répondre:
http://cerbermail.com/?2KrV3YZXnn
Daniel
;-)
Avatar
Jacques TREPP
"Daniel" a écrit dans le message de
news:48159600$0$9847$

Salut,

voici un exemple a adapté dans ton cas et qui fonctionne :

select chamresa.*, fiche_resa.* from chamresa left join fiche_resa on
chamresa.id= fiche_resa.id where fiche_resa is null

--
suivre ce lien pour répondre:
http://cerbermail.com/?2KrV3YZXnn
Daniel
;-)




Merci Daniel,
j'ai constuit ma requete de la façon suivante :
//Requete de sélection des chambres libres
//g_requete = "select distinct no_chambre, libelle_chambre from chambres"...
//+ " where (select chambre from fiche_resa "...
//+ " where chambre = no_chambre and dtresa between " + quote(date1) + " and
" + quote(date2) + " limit 1) is null"...
//+ " and etat = 0 "

ça me permet de n'obtenir que des chambres dont le numéro ne figure pas dans
les fiches résa pour la période indiquée, et en plus (2eme effet qui
s'coule) d'écarter les chambres dont l'état ne serait pas = 0 (chambre
fermée pour travaux, par exemple.

merci encore




--
Jacques TREPP
Albygest
3, rue Jean Mermoz
81160 ST-JUERY
(enlevez 'pasdespam' pour me joindre)