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

Langage SQL Discussion :

Requête SQL avec COUNT


Sujet :

Langage SQL

  1. #1
    Modérateur
    Avatar de Kreepz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2011
    Messages : 681
    Points : 1 458
    Points
    1 458
    Billets dans le blog
    1
    Par défaut Requête SQL avec COUNT
    Bonjour,

    J'affiche dans un tableau tous les utilisateurs de ma table utilisateur.
    Mais je voudrais rajouter une colonne avec le total des magasins liés à chaque utilisateur.

    J'ai donc mes tables:

    utilisateur : id_utilisateur | puis ses infos....

    liste_magasins_utilisateur : id_liste_mag_uti | id_magasin | id_utilisateur

    J'ai fait cette requête mais elle ne me retourne qu'une personne avec tous les liens de la table liste_magasins...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT pseudo, prenom, nom, email, date_inscription, is_active, count(id_magasin) 
    FROM utilisateur, liste_magasins_utilisateur
    WHERE utilisateur.id_utilisateur = liste_magasins_utilisateur.id_utilisateur
    Je voudrais que la requête me retourne même ceux qui n'ont pas de magasin lié.

    Je travaille sur MySql.

    Bonne journée !

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur en études décisionnelles
    Inscrit en
    Février 2013
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur en études décisionnelles

    Informations forums :
    Inscription : Février 2013
    Messages : 134
    Points : 351
    Points
    351
    Par défaut
    Bonjour,
    La manière dont tu crées ta jointure amène un filtre qui ne te permet de voir que les utilisateurs ayant un magasin lié.
    Il faudrait que tu prennes l'habitude d'écrire tes requêtes avec un join pour y voir plus clair.

    L'équivalent de ta requête est ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT pseudo, prenom, nom, email, date_inscription, is_active, count(id_magasin) 
    FROM utilisateur
    INNER JOIN liste_magasins_utilisateur ON utilisateur.id_utilisateur = liste_magasins_utilisateur.id_utilisateur
    Ca ne retire pas le souci du "filtre".
    Pour ramener même les utilisateurs qui n'ont pas de magasin lié, il faut que tu passe par une jointure externe via un LEFT JOIN. Essaie comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT pseudo, prenom, nom, email, date_inscription, is_active, count(id_magasin) 
    FROM utilisateur
    LEFT JOIN liste_magasins_utilisateur ON utilisateur.id_utilisateur = liste_magasins_utilisateur.id_utilisateur

    Bonne journée.

    Edit : Vindious le group by... vivement les vacances

  3. #3
    Modérateur
    Avatar de Kreepz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2011
    Messages : 681
    Points : 1 458
    Points
    1 458
    Billets dans le blog
    1
    Par défaut
    J'essayais justement avec un left outer join, et je viens d'essayer avec un left join mais ça ne marche pas, cela me renvoie un autre utilisateur avec le compte total de lien...

  4. #4
    Membre expérimenté
    Avatar de islamov2000
    Homme Profil pro
    Ingénieur d'études & developpement en informatique
    Inscrit en
    Septembre 2007
    Messages
    814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études & developpement en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 814
    Points : 1 717
    Points
    1 717
    Billets dans le blog
    6
    Par défaut
    Pour le COUNT,il faut penser à GROUP BY

  5. #5
    Membre éprouvé
    Avatar de landry161
    Homme Profil pro
    C#,PHP,MySQL,Android...
    Inscrit en
    Juillet 2010
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : C#,PHP,MySQL,Android...

    Informations forums :
    Inscription : Juillet 2010
    Messages : 423
    Points : 1 060
    Points
    1 060
    Billets dans le blog
    1
    Par défaut
    Excusez-moi,je suis encore novice au SQL mais est ce qu'il n y aurait pas un
    quelque part.Enfin juste une question

  6. #6
    Modérateur
    Avatar de Kreepz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2011
    Messages : 681
    Points : 1 458
    Points
    1 458
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par islamov2000 Voir le message
    Pour le COUNT,il faut penser à GROUP BY
    Exact! J'avais complètement oublié ce Group By...

    Merci!

  7. #7
    Membre éprouvé
    Avatar de landry161
    Homme Profil pro
    C#,PHP,MySQL,Android...
    Inscrit en
    Juillet 2010
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : C#,PHP,MySQL,Android...

    Informations forums :
    Inscription : Juillet 2010
    Messages : 423
    Points : 1 060
    Points
    1 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par islamov2000 Voir le message
    Pour le COUNT,il faut penser à GROUP BY
    Ah une personne du même avis que moi

  8. #8
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 103
    Points : 28 400
    Points
    28 400
    Par défaut
    D'ailleurs tout autre SGBD que MySQL aurait purement et simplement refusé cette requête sans le GROUP BY

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

Discussions similaires

  1. Requête SQL avec Having Count
    Par illight dans le forum Langage SQL
    Réponses: 9
    Dernier message: 22/10/2013, 14h00
  2. Requête SQL avec 2 count
    Par la_chouette dans le forum Langage SQL
    Réponses: 24
    Dernier message: 27/06/2011, 09h45
  3. [Requête SQL] - Select count avec plusieurs tables
    Par Pithonnette dans le forum SQL
    Réponses: 7
    Dernier message: 25/06/2009, 19h19
  4. [MySQL] Requête SQL avec un Count.
    Par Requiem11 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 11/05/2009, 11h01
  5. Problème de requête SQL avec DISTINCT et COUNT ?
    Par [ZiP] dans le forum Langage SQL
    Réponses: 4
    Dernier message: 29/01/2007, 17h11

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