Difficulté sur une Jointure complexe

raptorz_ Messages postés 3 Statut Membre -  
raptorz_ Messages postés 3 Statut Membre -
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

  1. jee pee Messages postés 9445 Date d'inscription   Statut Modérateur Dernière intervention   9 984
     
    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
  2. raptorz_ Messages postés 3 Statut Membre
     
    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
    1. jee pee Messages postés 9445 Date d'inscription   Statut Modérateur Dernière intervention   9 984
       
      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
      1. raptorz_ Messages postés 3 Statut Membre > jee pee Messages postés 9445 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Merci je comprends mieux comment faire mes jointures maintenant !
        0