Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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 Fri 26 June 2015 13:47

Pierre.Brochard
Participant occasionnel
Date d'inscription: 8 Apr 2015
Messages: 33

Requête SQL

Bonjour,

Je travaille sur 4 tables : product, opportunity, enterprise, refvalues (table de référence biensûr)
Je n'arrive pas à joindre les données de ma table product - prdname



-- Prestation /  Code APE / Chiffre d'Affaire

Select distinct product.prdname as Nom_Prestation, ape.refte1 as code_APE, entcorpname as nom_entreprise , sum(oppmontanthorstaxe_) as Chiffre_Affaire_HT
from enterprise
inner join opportunity on  enterprise.entid= opportunity.oppentpay_
Left join refvalues ape on EntCodeAPE_=ape.refid
Left join refvalues on  product.prdactid = ape.refid
left join opportunity on  product.prdactid= opportunity.oppentpay_

group by prdname, code_APE,entcorpname
order by prdname, code_APE,entcorpname



ERROR:  table name "opportunity" specified more than once

********** Erreur **********

ERROR: table name "opportunity" specified more than once
État SQL :42712


Auriez vous une idée ?

Cordialement,

Pierre

Hors ligne

 

#2 Fri 26 June 2015 13:58

Nicolas Granier
Participant assidu
Date d'inscription: 19 Apr 2007
Messages: 271

Re: Requête SQL

Code:

Select distinct product.prdname as Nom_Prestation, ape.refte1 as code_APE, entcorpname as nom_entreprise , sum(oppmontanthorstaxe_) as Chiffre_Affaire_HT
from enterprise
inner join [b]opportunity[/b] on  enterprise.entid= opportunity.oppentpay_
Left join refvalues ape on EntCodeAPE_=ape.refid
Left join refvalues on  product.prdactid = ape.refid
left join [b]opportunity[/b] on  product.prdactid= opportunity.oppentpay_
group by prdname, code_APE,entcorpname
order by prdname, code_APE,entcorpname

Je pense que vous ne pouvez pas faire plusieurs fois la jointure sur une même table.
C'est le cas de la table opportunity et egalement de refvalues sauf que sur la table refvalue vous avez mis un alias
Pourquoi ne pas essayer avec opportunity la technique de l'alias
A+
Nicolas GRANIER

Dernière modification par Nicolas Granier (Fri 26 June 2015 13:58)

Hors ligne

 

#3 Fri 26 June 2015 14:30

Pierre.Brochard
Participant occasionnel
Date d'inscription: 8 Apr 2015
Messages: 33

Re: Requête SQL

J'ai  mis des alias sur ma table opportunity et j'obtiens des résultats, merci. Effectivement 2 des 4 champs sont vides avec la requête que j'utilise.

Hors ligne

 

#4 Fri 26 June 2015 14:35

Pierre.Brochard
Participant occasionnel
Date d'inscription: 8 Apr 2015
Messages: 33

Re: Requête SQL

Vous auriez une méthode à me proposez ?

Hors ligne

 

#5 Fri 26 June 2015 17:12

Nicolas Granier
Participant assidu
Date d'inscription: 19 Apr 2007
Messages: 271

Re: Requête SQL

Je dois dire que je suis surpris que vous deviez faire deux jointures sur une même table.
Je ne suis pas un pro dans la modélisation de base de données mais cela me semble tout de même étrange. Après je ne connais pas vos données, vos contraintes et votre liberté d'action.

On a toujours moyen je pense par des requêtes dans tous les sens d'arriver à nos fins en SQL mais le travail sera moins pénible si le modèle de base de données mis en place reste logique. Les requêtes n'en seront que plus lisibles et simples à mettre en place.

Si je puis vous donner un conseil, c'est de ne pas utiliser le DISTINCT, on ne maitrise pas ce qu'il fait, en plus ce qui est dommage c'est que vous faîtes déjà le gros du travail avec l'utilisation du group by. Il vous faut utiliser des opérateurs d'agrégat au lieu d'utiliser le distinct dans votre requête select.
Bon courage
Nicolas GRANIER

Hors ligne

 

#6 Wed 01 July 2015 14:11

JF BEHM
Participant actif
Lieu: toulouse
Date d'inscription: 9 Aug 2013
Messages: 126
Site web

Re: Requête SQL

Pierre.Brochard a écrit:

Bonjour,

Je travaille sur 4 tables : product, opportunity, enterprise, refvalues (table de référence biensûr)
Je n'arrive pas à joindre les données de ma table product - prdname


Pierre


Bonjour Pierre,
serait-il possible de voir les relations entre les 4 tables , cela serait plus facile pour vous aider.
Cordialement,


Jean-François Behm, formateur SIG, jf.behm@texte-a-enlever.idgeo.fr, formations@texte-a-enlever.idgeo.fr
IDGEO, www.idgeo.fr
Institut de Développement de la Géomatique  42, avenue de Général de Croutte - 31100 toulouse

Hors ligne

 

#7 Wed 08 July 2015 08:50

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

Re: Requête SQL

Bonjour,

Pierre.Brochard a écrit:

ERROR:  table name "opportunity" specified more than once


Si vous appelez deux foix la même table dans vos jointures, par exemple pour des requêtes père/fils, vous devez leur donner un alias (en tout cas à l'une des deux). Sinon, le SGBD ne peut pas choisir dans laquelle des deux tables récupérer la colonne appelée.


Mathieu BOSSAERT
Association GeoRezo

Hors ligne

 

Pied de page des forums

Powered by FluxBB