|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre à l'essai
![]() Inscription : février 2007 Messages : 57 ![]() |
Bonjour,
Je cherche à introduire une requête count au sein d'une boucle while qui fetch une requête select. En gros je crée un forum basique. j'arrive à récupérer les informations (comme le titre, le message, ect) mais au moment de définir le nombre de réponses par exemple, pas moyen, je trouve pas comment faire. Un petit coup de main svp ? Code :
|
||
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 644 ![]() |
Bonjour,
Votre méthode est horrible. Comment détermine-t-on le nombre de réponses ? Il faut que vous nous présentiez un peu plus les tables existantes, car là on ne peux pas deviner ce qui ce cache derrière tout ca. |
|
|
00
|
|
|
#3 |
|
Membre à l'essai
![]() Inscription : février 2007 Messages : 57 ![]() |
En ma méthode est horrible ?
Ma base contient 3 table 1 user 1 NomForum 1 message Le count doit contenir le nombre de message qui porte identifiant du forum choisit : id_liaison_forum |
|
|
00
|
|
|
#4 | ||
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 644 ![]() |
Elle n'est pas bonne car vous traitez d'une manière itérative le problème alors que vous utilisez le langage SQL qui lui est ensembliste.
Alors sur des petites volumétries vous ne verrez rien de spécial, par contre si votre forum grossit ça va devenir catastrophique. Bref, Je pars du principe que id_liaison_forum est présent dans votre table "message" sinon il faudra faire des jointures. Code :
|
||
|
|
00
|
|
|
#5 | ||
|
Membre à l'essai
![]() Inscription : février 2007 Messages : 57 ![]() |
J'aurais peut être dû préciser que ceci est un projet uniquement destiné à mettre en pratique mon apprentissage du php et sql (bref je suis un noob^^)
J'ai essayer de comprendre et voici ce qui en ressort. Code php :
Ceci semble marcher, sauf quand le Forum est vide car Tot me retourne 1 mais cela est un détail. Y a-t-il une limite au nombre de jointures permises ? |
||
|
|
00
|
|
|
#6 | ||
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 644 ![]() |
Votre requête devrait être écrite de cette manière :
Code :
Dans la requête que vous avez postée vous utilisez une écriture spécifique MySql totalement foireuse qui risque de ne plus marcher sur une version +1 de ce SGBD. => lors d'une agrégation (GROUP BY) toutes les colonnes de la clause SELECT doivent être présentes dans la clause GROUP BY, sinon il faut utiliser une fonction d'agrégation sur les colonnes (min / max / sum / etc..) Pour votre seconde question, limite s'il y a, sera bien au dessus de ce que vous pourrez avoir. |
||
|
|
00
|
|
|
#7 |
|
Membre à l'essai
![]() Inscription : février 2007 Messages : 57 ![]() |
ça marche nickel merci.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com