Bonjour,
Je crée des requêtes SQL à la volée, pour faire des statistiques sur ma base de données. Je ne suis donc pas très libre pour faire des requêtes très compliquées.
J'ai trois tables :
Je cherche à connaître la somme du nombre d'heure associé au commentaire, en fonction de l'auteur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 commentaire ----------------------------------------- id | commentaire | nbheure ----------------------------------------- 1 | blabla | 2 2 | bla bla | 3 3 | bla bla bla | 4 4 | bla | 1 reponse ------------------------------------------------- id | reponse | auteur_id | commentaire_id ------------------------------------------------- 1 | blabla | 1 | 1 2 | blabla | 1 | 2 3 | blabla | 2 | 1 4 | blabla | 3 | 2 5 | blabla | 2 | 3 auteur ------------------ id | auteur ------------------ 1 | dupont 2 | durand 3 | duchmol
J'ai trouvé ceci, qui fonctionne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 -------------------------- auteur | nbheure -------------------------- dupont | 5 durand | 6 duchmol | 3
Cependant, comme la requête est créée à la volée, je ne dois pas avoir de sous requête.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT auteur, SUM(nbheure) FROM ( SELECT DISTINCT commentaire.id, auteur.auteur as auteur, commentaire.nbheure FROM commentaire LEFT JOIN reponse ON reponse.commentaire_id = commentaire.id LEFT JOIN auteur ON auteur.id = reponse.auteur_id ) as tmp GROUP BY tmp.auteur
Est-ce possible d'obtenir le même résultat, sans sous requête ?
J'ai essayé ceci, qui renvoie un résultat faux :
Merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT DISTINCT commentaire.id, auteur.id, SUM(auteur.nbheure) FROM commentaire LEFT JOIN reponse ON reponse.commentaire_id = commentaire.id LEFT JOIN auteur ON auteur.id = reponse.auteur_id GROUP BY auteur.id
Bonne journée
Partager