#1 Thu 23 July 2015 15:25
- Pierre.Brochard
- Participant occasionnel
- Date d'inscription: 8 Apr 2015
- Messages: 33
Obtenir les résultats de deux requêtes
Bonjour à tous,
Je cherche une méthode qui me permette d'obtenir : 1) des données zones commerciales + 2) des données sur les cantons
Les 2 requêtes (imbriqués dans une requête très conséquence) fonctionnent indépendamment. Le problème est que le résultat de chaque requête sont sur la même colonne : "zo_libelle".
Auriez vous une idée à me proposer ?
left outer join
(select zo_libelle as zonage_commercial, zt_entid from zonagetiers_, zonage_
left join refvalues comm on Zo_Type_ =comm.refid
where (comm.refte1='Zonage commercial' )
and zt_zonage=zo_id) T2 on t2.zt_entid=t1.entid
left outer join
(select zo_libelle, zt_entid from zonagetiers_, zonage_
left outer join refvalues canton on zo_type_ = canton.refid
where Zt_Zonage=Zo_ID and canton.refte1 = 'Canton') t3 on t3.zt_entid = t1.entid
Hors ligne
#2 Thu 23 July 2015 15:36
Re: Obtenir les résultats de deux requêtes
Si tu as les mêmes colonnes, utilise UNION
Freelance traitements ETL FME certifié: www.sitdi-france.fr Twitter : @sitdifrance
Site perso ~ www.partir-en-vtt.com
Hors ligne
#3 Thu 23 July 2015 19:23
- Pierre.Brochard
- Participant occasionnel
- Date d'inscription: 8 Apr 2015
- Messages: 33
Re: Obtenir les résultats de deux requêtes
J'ai essayer mais ça ne marche pas. En fait ces deux requêtes sont imbriqués dans une autre requête. Je m'expliquerai plus en détails.
Hors ligne
#4 Fri 24 July 2015 08:59
- Martin Bocquet
- Participant occasionnel
- Date d'inscription: 4 Mar 2015
- Messages: 22
Re: Obtenir les résultats de deux requêtes
Bonjour,
Une solution simple est d'utiliser des tables intermédiaires pour réaliser ta requête.
Code:
CREATE TABLE commercial AS (select zo_libelle as zonage_commercial, zt_entid from zonagetiers_, zonage_ left join refvalues comm on Zo_Type_ =comm.refid where (comm.refte1='Zonage commercial' ) and zt_zonage=zo_id); CREATE TABLE canton AS (select zo_libelle, zt_entid from zonagetiers_, zonage_ left outer join refvalues canton on zo_type_ = canton.refid where Zt_Zonage=Zo_ID and canton.refte1 = 'Canton') t3
puis de faire ta requête mère :
Code:
SELECT ... tatable JOIN commerce On ... JOIN canton ON ...
Tu peux ensuite utiliser les deux tables créées pour faire ta jointure / union comme tu le souhaites.
Dernière modification par Martin Bocquet (Fri 24 July 2015 09:02)
Hors ligne
#5 Fri 24 July 2015 14:56
- Pierre.Brochard
- Participant occasionnel
- Date d'inscription: 8 Apr 2015
- Messages: 33
Re: Obtenir les résultats de deux requêtes
Merci, je me lance sur cette piste.
Pierre
Hors ligne
#6 Fri 24 July 2015 15:54
Re: Obtenir les résultats de deux requêtes
Bonjour,
jetez un œil aux CTE, qui ressemblent fort à la proposition de Martin, sans créer de tables : http://docs.postgresql.fr/9.4/queries-with.html
Code:
WITH commercial AS ( (SELECT zo_libelle as zonage_commercial, zt_entid from zonagetiers_, zonage_ LEFT JOIN refvalues comm ON Zo_Type_ =comm.refid WHERE comm.refte1 = 'Zonage commercial' AND zt_zonage=zo_id), canton AS ( SELECT zo_libelle, zt_entid from zonagetiers_, zonage_ LEFT OUTER JOIN refvalues canton ON zo_type_ = canton.refid WHERE Zt_Zonage = Zo_ID and canton.refte1 = 'Canton') SELECT ... tatable JOIN commerce On ... JOIN canton ON ...
Mathieu BOSSAERT
Association GeoRezo
Hors ligne
#7 Wed 29 July 2015 15:42
- Pierre.Brochard
- Participant occasionnel
- Date d'inscription: 8 Apr 2015
- Messages: 33
Re: Obtenir les résultats de deux requêtes
Bonjour Mathieu,
Je me suis intéressé de près à votre méthode. Cependant je suis reste sur cette dernière. Pourriez vous me conseiller ?
with zonage_commercial as
(select zo_libelle as zonage_commercial, zt_entid
from zonagetiers_, zonage_
left outer join refvalues comm on Zo_Type_ =comm.refid
where comm.refte1='Zonage commercial' and zt_zonage=zo_id)
canton as
(select zo_libelle as canton, zt_entid
from zonagetiers_, zonage_
left outer join refvalues canton on zo_type_ = canton.refid
where Zt_Zonage=Zo_ID and canton.refte1 = 'Canton'and zt_zonage=zo_id)
select zo_libelle,comm.refte1 as zonage_commercial, canton.refte1 as canton
from zonagetiers_, zonage_
where zo_libelle in (select distinct zo_libelle from zonagetiers_, zonage_);
Hors ligne
#8 Wed 29 July 2015 17:02
Re: Obtenir les résultats de deux requêtes
Bonjour,
Je ne suis pas bien sûr de comprendre votre besoin. Pourriez vous fournir un extrait de vos deux tables et le décrire le résultat attendu de votre requête ?
Mathieu BOSSAERT
Association GeoRezo
Hors ligne