Group by ?

Répondre
allserv
le 04/11/2004 à 20:01
allserv
Bonsoir,

Voilà j'ai un petit problème car je veux faire le plus simplemetn possible avec les requetes et ne pas utilsier deux requetes alors que je peux le faire en une seule fois..

J'ai une table forums dans laquelle sont regroupés tous les groupes de forums (parent=0) et tous les forums associés (parent=id_du_groupe_de_forum)

Ce que je veux faire c'est ressortir tous les groupes de forums avec leurs forums respectifs.

Dois-je utiliser group by ?

Merci d'avance pour votre aide
mojorisin
le 04/11/2004 à 23:03
mojorisin
Réponse courte : oui smiley
echo ’16i[q]sa[ln0=aln100%Pln100/snlbx]sbA0D4D465452snlbxq’|dc
allserv
le 04/11/2004 à 23:52
allserv
J'essaye mais ca ne fonctionne pas car le truc c'est qu'il faut différencier tous les forums qui ont comme valeur parent=0 (ce sont les groupes de forums).
En gros si j'ai le groupe de forum qui a pour id = 2 et donc parent=0, il faut que je recupere tous les forums qui ont pour parent 2.

<select name="id_forum">
<? // Recuperation de tous les forums
$sql_two = "SELECT * FROM ".$GLOBALS["table_salons"]." GROUP BY parent ORDER BY nom";
$query_two = mysql_query($sql_two) or die("Erreur sur $sql_two :<br><br>".mysql_error());
while($data_two = mysql_fetch_array($query_two)){
$value = ($data_two["parent"]==0) ? "value='0'" : "value='".$data_two["id"]."'";
$option = ($data_two["parent"]==0) ? stripslashes($data["nom"]) : "->".stripslashes($data_two["nom"])."";
?>
<option <?=$value;?>><?=$option;?></option>
<? }
echo $sql_two;

?>
</select>


Comment faire ?

Merci d'avance
mojorisin
le 05/11/2004 à 14:46
mojorisin
En fait il faut que tu fasse une jointure sur la table elle même pour réaliser cela smiley
echo ’16i[q]sa[ln0=aln100%Pln100/snlbx]sbA0D4D465452snlbxq’|dc
allserv
le 05/11/2004 à 22:55
allserv
Je comprends pas trop comment faire une jointure sur la meme table... tu peux m'aider ? :(
allserv
le 05/11/2004 à 23:40
allserv
En gros voilà ce que donne le rainsonnement juste avec deux requetes, impossibles que je trouve le moyen de le fair à une requete :(

Mon code

Merci quand même

[Message modifié le 05/11/2004 à 23:43 par mojorisin]

[Message modifié le 05/11/2004 à 23:43 par mojorisin]

[Message modifié le 05/11/2004 à 23:45 par XTremTourist]
mojorisin
le 06/11/2004 à 10:43
mojorisin
Ok je voyais pas trop ce que tu souhaitais. En fait il ne te faut pas de clause group by pourfaire cela en une requete.
Requete :
SELECT t1.id,t1.nom,t2.nom AS parent FROM $GLOBALS["table_salons"] AS t1 LEFT JOIN $GLOBALS["table_salons"] AS t2 ON t1.parent=t2.id WHERE t1.parent !=0 ORDER BY t2.nom;

Voila ca te renvoi tout les entrées avec un parent différent de zero, et le nom du parent pour chaque entrée.
Il ne te reste plus qu'a faire l'algo pour la boucle while pour mettre en place le nom du parent dans ta 'select list'
echo ’16i[q]sa[ln0=aln100%Pln100/snlbx]sbA0D4D465452snlbxq’|dc
allserv
le 06/11/2004 à 12:09
allserv
Lol je dois vraiment etre une merde, je comprends pas du tout comment je peux recuperer via ta requete le nom du parent !?!?
mojorisin
le 06/11/2004 à 13:44
mojorisin
He bien en fait la requete revoie des champs de ce type :
id,nom,parent
ou parent est le nom du parent

donc il te faut un algo dans ta boucle pour savoir si il faut afficher l'option select contenant le nom du parent.

Voila, en espérant avoir été assez clair smiley
echo ’16i[q]sa[ln0=aln100%Pln100/snlbx]sbA0D4D465452snlbxq’|dc
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours