Problème de GROUP BY

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème de GROUP BY

par spirou » 17 juil. 2006, 22:33

Alors là merci, tu m'enlèves vraiment un poids, j'étais vraiment persuadé que c'était possible dans ma requête, et depuis tout à l'heure, je m'acharnais à essayer de la faire fonctionner, je désespérais, j'en pouvais plus...

Y'a des fois ça fait vraiment du bien de résoudre un problème.

Encore merci beaucoup Truc :D

par Truc » 17 juil. 2006, 22:09

Salut,

Pas possible de récupérer tous les enregistrements concernant les sous catégories et en regroupant par catégories (en une requête).

Le principe est de récupérer comme tu l'as fait toutes les sous catégories (donc avec les catégories en doublon) puis d'initialiser une variable qui récupère le nom de la catégorie s'il est différent d'avant on affiche sinon on n'affiche pas la catégorie
$categorie = "";

($data = boucle sur la requête)
{
   if($categorie != $data['categorie'])
  {
       $categorie = $data['categorie'];
       echo $categorie;
  } 
   echo sous-categorie;
  ...
...
}

Problème de GROUP BY

par spirou » 17 juil. 2006, 18:58

Salut à tous !

J'ai un petit problème concernant le group by de ma requête, je n'arrive pas à faire que les catégories ne se répètent pas pour chaque sous catégories, j'ai beau modifier le group by, je n'arrive pas au résultat voulu.

Voici ma requête :

Code : Tout sélectionner

SELECT C.nom, COUNT(R.num) AS sujetcat, COUNT(R.num) AS repcat, SC.nom AS soucat, SC.comment, IF(COUNT(R.num) != 0, COUNT(R.num), ' - ') AS tt_sujet, IF(COUNT(R.num) != 0, COUNT(R.num), ' - ') AS tt_rep, COALESCE(S.nom, ' - ') AS sujet, COALESCE(R.auteur, ' - ') AS auteur, COALESCE(R.date, ' - ') AS date FROM f_cat AS C LEFT OUTER JOIN f_ss_cat AS SC ON C.id = SC.id_cat LEFT OUTER JOIN f_sujet AS S ON SC.id = S.id_ss_cat LEFT OUTER JOIN f_reponse AS R ON S.id = R.id_sujet GROUP BY SC.id HAVING tt_sujet = 0 ORDER BY C.id;
En faisant un affichage basique, (mes tables sont vides), j'obtiens :
Forum général => - => -
Pour parler de tout et de rien => - => - => - => - => -

Forum général => - => -
flood => - => - => - => - => -
Ici on flood à mort ;)

Forum football => - => -
Le cssa => - => - => - => - => -
Forum exclusivement réservé au CSSA

Forum football => - => -
Foot en général => - => - => - => - => -
Tous vos topics sur le foot hors CSSA
Donc, comme vous voyez il y a répétition des noms des forum général et forum football.

Ceci correspond à C.nom dans ma requête.
Mais si je fais un GROUP BY C.nom, je n'obtiens plus qu'une seule sous-catégorie dans chaque catégorie.

Je n'arrive pas à trouver comment faire :?

Merci.