Bonjour,
Après plusieurs heures de tutoriaux et recherche en tout genre je trouve pas de solution. Tout aide ou piste sera la bienvenue !
Je possède une table :
Un requête précédente m'envoie les ID_objets qui m'intéresse.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 ID_objet ID_utilisateur date_insertion -------- ------------ ------------- 1 1 D 2 1 D 3 1 D 1 2 D 2 2 D 3 2 D 1 2 D 2 2 D 3 2 D
Ainsi :
Cette requête me renvoi correctement chaque ligne avec le nom de l'utilisateur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 // $liste_id_objet contient les ID sous forme ID_objet=1 || ID_objet = 2 || ID_objet=3 pour notre exemple. SELECT p.ID_objet,p.ID_utilisateur,m.nom FROM pla as p LEFT JOIN mem as m ON p.ID_utilisateur=m.ID_utilisateur WHERE $liste_id_objet
J'aimerai maintenant savoir pour chaque ID_objet combien de ligne possède chacun des utilisateurs présent.
J'ai donc pensé à COUNT et la clause GROUP BY ID_objet
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT p.ID_objet,COUNT(p.ID_utilisateur),m.nom FROM pla as p LEFT JOIN mem as m ON p.ID_utilisateur=m.ID_utilisateur WHERE $liste_id_objet GROUP BY p.ID_objet
Il regroupe bien les lignes selon les ID_objet et m'affiche correctement le nombre de ligne.
La ou ça coince, c'est qu’évidemment qu'il ne me ressort qu'une seul ligne par ID_objet du fait du GROUP BY ID_objet. Hors il me faudrait autant de ligne qu'il y a d'utilisateur par objet :
il me sort donc :
ID_objet COUNT(ID_utilisateur) date_insertion Nom
-------- ------------ ------------- ------
1 1 D XXX
2 2 D XXX
3 2 D XXX
Il semble me sortir l'ID_utilisateur qu'il rencontre en dernier.
Hors j'aimerai qu'il me réponde :
J'ai pensé à DISTINCT mais après avoir tester pas mal de truc, rien ne passe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 ID_objet ID_utilisateur COUNT(ID_utilisateur) Nom -------- ------------ ------------- ------ 1 1 1 XXX 1 2 2 XXX 2 1 1 XXX 2 2 2 XXX 3 1 1 XXX 3 2 2 XXX
Au pire si j'y arrive pas, je traiterai tout ça en php. Mais il me semble qu'il est possible de le faire en SQL. Alors autant apprendre
Merci à toute aide !
Partager