Recherche MySQL un peu complexe [RESOLU] - SQL/NoSQL - Programmation
Marsh Posté le 01-09-2007 à 01:04:00
Je n'ai pas testé cette requête mais je pense que le résultat convient à ce que tu recherches.
Code :
|
En fait, je construis une requête donnant le nombre d'utilisateurs par groupe à partir de la table user_group; puis je fusionne ce résultat avec la table groups afin d'obtenir les infos complètes de cette table et je trie par le nombre de personnes par groupe.
Si ça ne marche pas, je la testerai pour trouver le soucis.
Marsh Posté le 01-09-2007 à 09:34:41
J'aurais fait un truc comme ça moi :
Code :
|
Mauvaise section, soit dit en passant...
Marsh Posté le 01-09-2007 à 18:11:29
Merci sielfried c'est impeccable
Dans quelle section voulais-tu que je poste ?
Marsh Posté le 01-09-2007 à 18:21:48
Il voulait que ce soit surement dans la sous-section SQL/SGBD.
Par curiosité, tu as testé mon idée?
Marsh Posté le 01-09-2007 à 18:29:08
Ah désolé c'est déplacé j'ai cherché pendant un moment, trouvé ca un peu bizarre, mais j'avais pas vu le SQL bien caché
Pour ta requête oui j'ai testé :
Erreur
requête SQL:
SELECT *
FROM phpbb_groups AS g
LEFT JOIN (
SELECT COUNT( * ) AS count, group_id
FROM phpbb_user_group
GROUP BY group_id
) AS u \ ON g.group_id = u.group_id
ORDER BY u.count;
MySQL a répondu:Documentation
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\
ON g.group_id = u.group_id ORDER BY u.count' at line 1
Marsh Posté le 01-09-2007 à 18:39:08
le \ permet de marquer le retour en ligne sans le prendre en compte dans la requête, en clair il ne faut pas le recopier
Marsh Posté le 01-09-2007 à 18:46:03
Ah je me disais c'est pas très MySQL tout ca
Mais sinon
Ca me sort effectivement la liste de tous les groupes, mais c'est bizarre car count=1 tout le temps donc je ne peux pas avoir les membres de chaque groupe... sinon je crois que c'est bien trié.
Mais la requête de sielfried est plus simple quand même
Marsh Posté le 01-09-2007 à 18:53:23
Ok c'était juste pour savoir.
Et tout à fait d'accord avec la requête de sielfried qui est largement plus lisible et clair que la mienne.
Marsh Posté le 31-08-2007 à 19:00:43
Bonjour !
Je suis sur phpBB, et j'essaie de créer une page sur laquelle il y a une liste des groupes existant sur mon forum (ca c'est fait), mais je voudrais pouvoir trier la liste par nombre de membres et j'ai du mal avec la requête MySQL (4.0 chez moi)
Concrètement voici la situation :
La table phpbb_groups contient le champs group_id, et c'est à partir de celle-ci que j'obtient ma liste.
La table phpbb_user_group contient les champs user_id et group_id, et pour chaque membre inscrit dans un groupe on a un enregistrement du type : 115 (id du membre), 2 (id du groupe).
Ca fonctionne comme ca phpBB
Quelle requête dois-je faire pour pouvoir récupérer les enregistrements de phpbb_groups (en clair ma liste de groupes) triés par le nombre de leurs membres (donc le nombre de fois qu'apparait l'id de chaque groupe dans phpbb_user_group).
Si vous avez tout suivi et que vous vous y connaissez en MySQL, merci d'avance
Bonne journée !
Message édité par arkandias1 le 01-09-2007 à 18:26:53