PedroBD | Bonjour,
J'ai une base qui stocke des produits sur lesquels on effectue des opérations. Ces opérations sont réalisées par différents utilisateurs dans des lieux différents. A un produit peut donc correspondre plusieurs opérations. A une opérations plusieurs utilisateurs et plusieurs lieux.
Les lieux sont stockés dans lieu table "Lieu_Produit" et reliés à la table "Produit" par une table intermédiaire qui a une clé primaire. Ce qui me permet d'entrer plusieurs lieux pour un produit.
Même système pour la table intermédiaire Produit_Operation qui relie Produit à Operation.
Je voudrais afficher toutes les opérations d'un produit. J'écris la requête que j'ai copié plus bas dans la page.
MON PROBLEME:
La requête me retourne chaque opération (et ses caractéristiques) repétée pour chaque lieu.
Par exemple si sur le produit "pdt1" on a fait l'opération "op1" à Bordeaux, "op2" à Caen et "op3" à Lille, je vais avoir affiché:
op1 -> Bordeaux
op1 -> Caen
op1 -> Lille
op2 -> Bordeaux
op2 -> Caen
op2 -> Lille
op3 -> Bordeaux
op3 -> Caen
op3 -> Lille
Si maintenant j'enlève le distinct, c'est encore plus la merde parce que j'ai affiché 3 fois l'opération pour chaque lieu.
MA QUESTION:
Je suppose qu'il faut utiliser un GROUP BY, mais j'arrive pas à trouver le bon.
Merci de votre aide et du temps que vous prendrez à lire cette longue question!
MON CODE:
Voici ma requête (logée dans une fonction php):
Code :
- $scan_operations="SELECT DISTINCT Type_Operation.Id_Type_Operation,Type_Operation.Nom_Type_Operation,";
- $scan_operations.="Operation.Id_Operation,Operation.Commentaire_Operation,";
- $scan_operations.="Operation_Util.Id_Operation,Operation_Util.Id_Utilisateur,";
- $scan_operations.="Utilisateur.Id_Utilisateur,Utilisateur.Alias_Utilisateur,";
- $scan_operations.="Utilisateur.Date_Connexion,Utilisateur.Heure_Connexion,";
- $scan_operations.="Produit_Operation.Id_Operation,Produit_Operation.Id_Produit,";
- $scan_operations.="Produit.Id_Produit,Produit_Lieu.Id_Lieu,Produit_Lieu.Id_Produit,";
- $scan_operations.="Lieu_Produit.Id_Lieu,Lieu_Produit.Nom_Lieu";
- $scan_operations.=" FROM Type_Operation";
- $scan_operations.=" INNER JOIN Operation";
- $scan_operations.=" ON Type_Operation.Id_Type_Operation=Operation.Id_Type_Operation";
- $scan_operations.=" INNER JOIN Operation_Util";
- $scan_operations.=" ON Operation.Id_Operation=Operation_Util.Id_Operation";
- $scan_operations.=" INNER JOIN Utilisateur";
- $scan_operations.=" ON Operation_Util.Id_Utilisateur=Utilisateur.Id_Utilisateur";
- $scan_operations.=" INNER JOIN Produit_Operation";
- $scan_operations.=" ON Produit_Operation.Id_Operation=Operation.Id_Operation";
- $scan_operations.=" INNER JOIN Produit";
- $scan_operations.=" ON Produit.Id_Produit=Produit_Operation.Id_Produit";
- $scan_operations.=" INNER JOIN Produit_Lieu";
- $scan_operations.=" ON Produit.Id_Produit=Produit_Lieu.Id_Produit";
- $scan_operations.=" INNER JOIN Lieu_Produit";
- $scan_operations.=" ON Produit_Lieu.Id_Lieu=Lieu_Produit.Id_Lieu";
- $scan_operations.=" WHERE Produit.Id_Produit='$idpdt'";
- $scan_operations.=" ORDER BY Operation.Id_Operation";
|
|