#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
Re: 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
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@, idgeo.frformations@ 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
Re: Requête SQL
Bonjour,
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