Difficulté sur une Jointure complexe

Fermé
raptorz_ Messages postés 3 Date d'inscription vendredi 27 mai 2022 Statut Membre Dernière intervention 28 mai 2022 - 27 mai 2022 à 11:23
raptorz_ Messages postés 3 Date d'inscription vendredi 27 mai 2022 Statut Membre Dernière intervention 28 mai 2022 - 28 mai 2022 à 10:56
Bonjour,

Je rencontre des difficultés sur une requête avec plusieurs jointures.



l'objectif est d'extraire le nombre de produits (product) et de commandes (purchase_order) par client (customer) pour les clients ayant passé au moins deux commandes avec comme colonnes attendues : lastname, purchase_count, product_count.
Ma requête est la suivante mais elle ne fonctionne pas.


SELECT c.lastname, COUNT (po.order_id) AS purchase_count, COUNT (p.product_id) AS product
FROM customer c, purchase_order po, product p
INNER JOIN customer ON po.customer_id = customer.customer_id
INNER JOIN order_product ON po.order_id = order_product.order_id
INNER JOIN order_product ON p.product_id = order_product.product_id
HAVING purchase_count >= 2


J'ai un problème au niveau des jointures avec le message Ambiguous column name "PRODUCT_ID".
Si je supprime une des jointures la requête se lance.
quelqu'un aurait une idée de comment faire la requête ?

Merci d'avance

Configuration: Windows / Firefox 100.0

2 réponses

jee pee Messages postés 39756 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 21 mai 2024 9 192
Modifié le 27 mai 2022 à 12:40
Bonjour,

Il te faut mettre des alias sur les join
INNER JOIN order_product AS op1


Et à partir du moment où tu utilises des jointures, il faudrait les utiliser partout, donc dans le FROM n'avoir qu'une seule table, les liens avec les autres se faisant avec les jointures.

Et compte tenu de ce qu'il faut afficher, tu ne devrais avoir besoin que de 3 tables, client, commande, produits commandés.

1
raptorz_ Messages postés 3 Date d'inscription vendredi 27 mai 2022 Statut Membre Dernière intervention 28 mai 2022
27 mai 2022 à 23:21
Bonjour,

Merci pour ta réponse je comprend un peu mieux mes erreurs.
Ce que je ne comprends pas c'est comment faire les jointures en gardant qu'une seule table sur le from.
Je suis un peu perdu la
0
jee pee Messages postés 39756 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 21 mai 2024 9 192
Modifié le 28 mai 2022 à 10:03
Sur le from tu as la 1ère table et sur chaque join tu rajoutes une nouvelle table. Quelque chose comme (SGDG) :
SELECT c.lastname, COUNT (po.order_id) AS purchase_count, COUNT (op.product_id) AS product
FROM customer c
INNER JOIN purchase_order po ON po.customer_id = c.customer_id
INNER JOIN order_product op ON op.order_id = po.order_id
HAVING purchase_count >= 2
1
raptorz_ Messages postés 3 Date d'inscription vendredi 27 mai 2022 Statut Membre Dernière intervention 28 mai 2022 > jee pee Messages postés 39756 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 21 mai 2024
28 mai 2022 à 10:56
Merci je comprends mieux comment faire mes jointures maintenant !
0