banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#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

Loic_GR
Moderateur
Lieu: Besancon
Date d'inscription: 12 May 2011
Messages: 1022
Site web

Re: Obtenir les résultats de deux requêtes

Si tu as les mêmes colonnes, utilise UNION smile


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

MathieuB
Membre du bureau
Lieu: Montpellier
Date d'inscription: 18 Jan 2006
Messages: 1222
Site web

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

MathieuB
Membre du bureau
Lieu: Montpellier
Date d'inscription: 18 Jan 2006
Messages: 1222
Site web

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

 

Pied de page des forums

Powered by FluxBB