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

Requêtes MySQL Discussion :

count dans table externe avec une seule requête


Sujet :

Requêtes MySQL

  1. #1
    Membre confirmé Avatar de gtraxx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 043
    Points : 570
    Points
    570
    Par défaut count dans table externe avec une seule requête
    Bonsoir, je viens de terminé un script pour compter le nombre de personnes dans une table.
    Mon architecture est composé de deux tables:
    1. La première contient les questions
    2. La seconde les personnes ayant répondu

    Je suis obligé de faire en deux requêtes le fait de compter le nombre de personnes ayant répondu a une question.
    Table contests
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT c.* FROM mc_plugins_contests AS c
    Table contest_mails
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT count(m.idmail) as tmail
    		FROM mc_plugins_contests_mails AS m
    		WHERE m.idcontest=1
    Ne peut on pas faire exactement la même chose en une seule requête ?
    J'avais tenté une jointure mais cela ne retourne qu'un seul enregistrement.
    J'avais tenté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT c.idcontest,c.date_start,c.date_end,count(m.idmail) as tmail 
    		FROM mc_plugins_contests AS c
    		LEFT JOIN mc_plugins_contests_mails as m USING(idcontest)
    		ORDER BY date_start DESC
    Le résultat attendu :
    Question 1 contient 10 personnes
    Question 2 contient 3 personnes
    Sa limiterai les accès a la base de données

  2. #2
    Membre éclairé Avatar de ledisciple
    Homme Profil pro
    observateur de nuage niveau 2.3
    Inscrit en
    Août 2008
    Messages
    860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : observateur de nuage niveau 2.3

    Informations forums :
    Inscription : Août 2008
    Messages : 860
    Points : 723
    Points
    723
    Par défaut
    Je ne sais pas si ça répond à ta question mais avec ça :

    table1 ( questions)

    idcontest|texte|date
    1| la première question|2011-04-26
    2|la deuxième question|2011-04-27
    14|la 14ème|2011-04-26
    20|20ème|2011-04-30
    table 2 (personnes)

    idmail|idcontest
    58|1
    58|2
    56|2
    85|1
    147|14
    98|20
    et cette requete

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT table1.idcontest as question,count(idmail)as "nombre de réponse"
    FROM table1 INNER JOIN  table2 on table1.idcontest = table2.idcontest
    group by table1.idcontest
    j'ai sorti ça :

    question: 1
    nombre de réponse: 2
    -
    question: 2
    nombre de réponse: 2
    -
    question: 14
    nombre de réponse: 1
    -
    question: 20
    nombre de réponse: 1

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/05/2014, 11h58
  2. [MySQL] Afficher les données dans un tableau html horizontal avec une seule requête au lieu de 6
    Par arthuro45 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 07/10/2010, 11h13
  3. [MySQL] Tri par champs avec une seule requête
    Par Yoks69 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 10/10/2008, 08h05
  4. table externe avec une sequence
    Par supbattosai dans le forum SQL
    Réponses: 1
    Dernier message: 26/12/2007, 15h14
  5. Réponses: 1
    Dernier message: 13/06/2006, 18h57

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