IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Compteur sur liste avec fusion [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2013
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 37
    Points : 25
    Points
    25
    Par défaut Compteur sur liste avec fusion
    Bonjour,

    Je vous explique mon soucis, enfaîte j'aimerais via une requête sql lister des groupes et compter le nombre de membres inscrit sur ce groupe.

    Ceci en une seul requête

    le soucis est que je vois pas trop comment m'y prendre lol voici ma requête initial

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT 
        COUNT(DISTINCT am.id) AS compteur,
        gam.id,
        gam.titre 
    FROM 
        mc__groupe_amis AS gam, 
        mc__amis AS am 
    WHERE 
        gam.idUsers = 'mon id user' 
    AND 
        (am.groupe_demandeur=gam.id OR am.groupe_receveur=gam.id)

    Avec cette requête je ne récupère forcément qu'un seul enregistrement, mais comment je pourrais récupérer toutes la liste ?

    En gros je lui demande: "Va me chercher tous les groupes et compte moi combien y a de membre dans ce groupe"

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 45
    Points : 56
    Points
    56
    Par défaut
    Bonjour,

    Tu peux utiliser SQL_CALC_FOUND_ROWS, mais ça implique "2 requêtes", la suivante étant SELECT FOUND_ROWS(). L'utilisation de cette fonction dans ton cas ne me semble pas particulièrement judicieux.

    Sinon tu peux aussi faire un compteur en php, que tu incrémentes dans ta boucle.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2013
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 37
    Points : 25
    Points
    25
    Par défaut
    Bonjour,

    Oui pour mon cas c'est fonction n'irais pas par contre je comprend pas l'histoire de la boucle incrémenté ?

    Vous voulez que je fasse de ma requete une boucle et dans cette boucle faire une autre requete pour compter le nombre d'enregistrement ?

    si c'est cela aille sa va gourmand cette affaire

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT 
        COUNT(DISTINCT am.id) AS compteur,
        am.id,
        gam.id,
        gam.titre 
    FROM 
        mc__groupe_amis AS gam,
    JOIN
       mc__amis AS am ON am.groupe_demandeur=gam.id OR am.groupe_receveur=gam.id
    WHERE 
        gam.idUsers = 'mon id user' 
    GROUP BY am.id
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 45
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par DevLqncer Voir le message
    Vous voulez que je fasse de ma requete une boucle et dans cette boucle faire une autre requete pour compter le nombre d'enregistrement ?

    si c'est cela aille sa va gourmand cette affaire
    Absolument pas..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $cnt = 0;
    while ($row = $rq -> fetch())
    {
       // instruction...
       $cnt++;
    }

  6. #6
    Nouveau membre du Club
    Inscrit en
    Juin 2013
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 37
    Points : 25
    Points
    25
    Par défaut
    @no-war: Je ne peu pas procéder de la sorte vu que j'utilise pdo en système MVC et que je veut récupéré le nombre d'entré dans la bdd d'une table par rapport a un id précis ^^

    @sabotage: Ceci reviens au même ^^ (même résultat)

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 45
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par DevLqncer Voir le message
    @no-war: Je ne peu pas procéder de la sorte vu que j'utilise pdo en système MVC et que je veut récupéré le nombre d'entré dans la bdd d'une table par rapport a un id précis ^^
    Je ne vois pas le rapport. Ou alors je ne comprends pas ce que tu veux dire

  8. #8
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 45
    Points : 56
    Points
    56
    Par défaut
    Ah je viens de comprendre ce que tu veux faire !

    Heuu.. Je sèche

  9. #9
    Nouveau membre du Club
    Inscrit en
    Juin 2013
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 37
    Points : 25
    Points
    25
    Par défaut
    Lol comme sa on est 2 ^^ je sait même pas si c'est possible

  10. #10
    Nouveau membre du Club
    Inscrit en
    Juin 2013
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 37
    Points : 25
    Points
    25
    Par défaut
    Ok sa a l'air de fonctionner comme sa:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SELECT 
        COUNT(DISTINCT am.id) AS compteur,
        gam.id,
        gam.titre 
    FROM 
        mc__groupe_amis AS gam
    LEFT OUTER JOIN
       mc__amis AS am ON am.groupe_demandeur=gam.id OR am.groupe_receveur=gam.id
    WHERE 
        gam.idUsers = 'id du membre' 
    GROUP BY gam.id

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Group By sur list avec NHibernate
    Par ptilemare dans le forum C#
    Réponses: 9
    Dernier message: 22/08/2012, 11h56
  2. Problmème sur liste avec affichage Calendrier
    Par HGDL1 dans le forum SharePoint
    Réponses: 0
    Dernier message: 28/09/2007, 10h51
  3. filtre sur liste avec selection multiple
    Par petitours dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 01/08/2007, 09h42
  4. Test sur formulaire avec liste des erreurs
    Par Nicos77 dans le forum Langage
    Réponses: 37
    Dernier message: 17/11/2005, 10h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo