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 :

Transformer un COUNT(*) qui ne retourne rien en un COUNT(*) qui retourne un 0 [MySQL-5.0]


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Doubs (Franche Comté)

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

    Informations forums :
    Inscription : Avril 2018
    Messages : 32
    Points : 24
    Points
    24
    Par défaut Transformer un COUNT(*) qui ne retourne rien en un COUNT(*) qui retourne un 0
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT ID_Utilisateur, Pseudo_Utilisateur, Nom_Utilisateur, Prenom_Utilisateur, Etat_Utilisateur, IF(COUNT(*) < 1, 0, COUNT(*)) AS NbPost 
    FROM utilisateur u, article a 
    WHERE u.ID_Utilisateur = a.Utilisateur_Article 
    GROUP BY ID_Utilisateur, Pseudo_Utilisateur, Nom_Utilisateur, Prenom_Utilisateur, Etat_Utilisateur 
    ORDER BY NbPost DESC
    Voila en gros ma requête. Elle permet d'afficher les info utilisateur et le nombre d'article qu'il on poster. Le problème c'est que si il non rien poster il ne vont pas du tout apparaître car le COUNT(*) ne retourne rien, j'aimerais quand même les voir apparaître mais avec 0 a la place du nombre du COUNT(*)

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 737
    Points
    52 737
    Billets dans le blog
    5
    Par défaut
    Pensez à utiliser la balise CODE car là c'est immonde à lire !

    Une solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT DISTINCT ID_Utilisateur, Pseudo_Utilisateur, Nom_Utilisateur, Prenom_Utilisateur, Etat_Utilisateur, 1 AS NbPost
    FROM   utilisateur u, article a
    WHERE  u.ID_Utilisateur = a.Utilisateur_Article
    UNION ALL
    SELECT NULL, NULL, NULL, NULL, NULL, 0
    Et pour apprendre le SQL :
    Nom : SQL.jpg
Affichages : 1084
Taille : 47,4 Ko

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Doubs (Franche Comté)

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

    Informations forums :
    Inscription : Avril 2018
    Messages : 32
    Points : 24
    Points
    24
    Par défaut Merci mais
    Merci mais le problème c'est quil n'y a pas forcement 1 ou 0 post il peut y en avoir 200

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Pour faire apparaître les utilisateurs n'ayant rien posté, il faut utiliser une jointure externe.

    Tatayo.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Doubs (Franche Comté)

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

    Informations forums :
    Inscription : Avril 2018
    Messages : 32
    Points : 24
    Points
    24
    Par défaut
    Je ne mis connais pas trop en SQL, je suis étudiant, comment on fait une jointure externe ?

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 737
    Points
    52 737
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par ClaytonG Voir le message
    Merci mais le problème c'est quil n'y a pas forcement 1 ou 0 post il peut y en avoir 200
    Demande mal formulée donc. Soyez clair !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT ID_Utilisateur, Pseudo_Utilisateur, Nom_Utilisateur, Prenom_Utilisateur, Etat_Utilisateur, 
           CASE COUNT(a.Utilisateur_Article) WHEN 0 THEN 0 ELSE 1 END AS NbPost
    FROM   utilisateur u
           LEFT OUTER JOIN article a
              ON u.ID_Utilisateur = a.Utilisateur_Article
    GROUP  BY ID_Utilisateur, Pseudo_Utilisateur, Nom_Utilisateur, Prenom_Utilisateur, Etat_Utilisateur


    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Doubs (Franche Comté)

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

    Informations forums :
    Inscription : Avril 2018
    Messages : 32
    Points : 24
    Points
    24
    Par défaut Merci
    Merci le problème est résolu après une petite modification de votre code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT ID_Utilisateur, Pseudo_Utilisateur, Nom_Utilisateur, Prenom_Utilisateur, Etat_Utilisateur, 
           CASE COUNT(a.Utilisateur_Article) WHEN 0 THEN 0 ELSE COUNT(a.Utilisateur_Article) END AS NbPost
    FROM   utilisateur u
           LEFT OUTER JOIN article a
              ON u.ID_Utilisateur = a.Utilisateur_Article
    GROUP  BY ID_Utilisateur, Pseudo_Utilisateur, Nom_Utilisateur, Prenom_Utilisateur, Etat_Utilisateur
    ORDER BY NbPost DESC

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Le CASE ici ne sert à rien, car:
    1. soit COUNT(a.Utilisateur_Article) vaut 0, dans ce cas i renvoie 0
    2. Soit il est différent de 0, dans ce cas il renvoie COUNT(a.Utilisateur_Article), bref la valeur du count()

    Bref un simple COUNT(a.Utilisateur_Article) suffira ici.

    Tatayo.

  9. #9
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 066
    Points
    19 066
    Par défaut
    Salut à tous.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CASE COUNT(a.Utilisateur_Article) WHEN 0 THEN 0 ELSE COUNT(a.Utilisateur_Article) END AS NbPost
    Vous dites : si le count(*) donne zéro, vous voulez zéro, sinon la valeur du count.
    En gros, ce case ... end ne sert à rien du tout, comme l'indique Tatayo.

    Citation Envoyé par Tatayo
    Bref un simple COUNT(a.Utilisateur_Article) suffira ici.
    Et bien non, car si dans la jointure externe, il n'y a aucune ligne, il retourne NULL.

    Le mieux dans le count() est d'indiquer une colonne de la table 'article', celle que vous désirez comptabiliser.
    Puis remplacer votre case ... end par ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    count(coalesce(a.colonne,0)) as NbPost
    Si la colonne est marquée NULL ou bien il n'existe pas de lignes pour l'utilisateur, alors le fait d'utiliser la fonction coalesce() transforme le NULL de la colonne en 0.
    --> https://dev.mysql.com/doc/refman/8.0...ction_coalesce

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  10. #10
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Doubs (Franche Comté)

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

    Informations forums :
    Inscription : Avril 2018
    Messages : 32
    Points : 24
    Points
    24
    Par défaut Mon code au final est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT ID_Utilisateur, Pseudo_Utilisateur, Nom_Utilisateur, Prenom_Utilisateur, Etat_Utilisateur, COUNT(COALESCE(a.Utilisateur_Article)) AS NbPost
    FROM   utilisateur u
    LEFT OUTER JOIN article a
    ON u.ID_Utilisateur = a.Utilisateur_Article
    GROUP  BY ID_Utilisateur, Pseudo_Utilisateur, Nom_Utilisateur, Prenom_Utilisateur, Etat_Utilisateur
    ORDER BY NbPost DESC
    Ce code marche a la perfection

  11. #11
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Citation Envoyé par Artemus24 Voir le message
    Et bien non, car si dans la jointure externe, il n'y a aucune ligne, il retourne NULL.
    Non, je maintiens ce que j'ai dit.
    Je viens de faire le test suivant (sur SqlServer)
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select c.cd_c_code,COUNT(t.cd_c_code)
    from TORPEDO.CLIENT_DETAIL as c
    left outer join TORPEDO.ENT_TDV as t on t.CD_C_CODE = c.CD_C_CODE and t.SOU_C_CODE = '1'
    where c.CD_C_NOM = 'MARTIN'
    group by c.CD_C_CODE
    La condition sur t.sou_c_code est faite de telle sorte qu'aucune ligne ne soit trouvée pour la table ENT_TDV.

    Count renvoie bien 0 pour chaque client trouvé.

    Tatayo.

  12. #12
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Doubs (Franche Comté)

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

    Informations forums :
    Inscription : Avril 2018
    Messages : 32
    Points : 24
    Points
    24
    Par défaut
    Sur mysql ca ne marche pas

  13. #13
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 066
    Points
    19 066
    Par défaut
    Salut Tatayo.

    Citation Envoyé par Tatayo
    Je viens de faire le test suivant (sur SqlServer)
    Si je comprends bien votre raisonnement, pour valider le comportement de MySql, vous testez cela dans Microsoft SQL Server ?
    Et qu'est-ce qui vous dit que MySql se comporte à l'identique de Microsoft SQL Server ?

    Je viens de m'apercevoir qu'il y a un léger problème.
    Il s'agit du choix de la colonne pour comptabiliser le nombre de lignes quand on utilise une jointure externe.
    Nous ne savons pas distinguer le NULL signifiant "absence de ligne" de celui mis volontairement dans une colonne pour "absence de valeur".

    Je suis d'accord avec vous que le count() ne comptabilise pas les NULL.
    Et de ce fait, la bonne solution est de comptabiliser sur l'identifiant.
    Pourquoi ? Parce que l'identifiant est à NULL si et seulement si la ligne n'existe pas.

    Mais si l'on utilise une autre colonne, le sens de cette comptabilisation sera différente.
    Nous ne saurons pas faire cette distinction du NULL, ce qui peut poser problème !
    C'est pourquoi la fonction "coalesce()" transforme le NULL en une valeur, disons 0.

    Je viens de reprendre le problème de ClaytonG afin de comprendre pourquoi le count(*) ne lui convient pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    --------------
    START TRANSACTION
    --------------
     
    --------------
    DROP DATABASE IF EXISTS `base`
    --------------
     
    --------------
    CREATE DATABASE IF NOT EXISTS `base`
            DEFAULT CHARACTER SET `latin1`
            DEFAULT COLLATE       `latin1_general_ci`
    --------------
     
    --------------
    DROP TABLE IF EXISTS `testone`
    --------------
     
    --------------
    CREATE TABLE `testone`
    ( `id`   integer unsigned  NOT NULL auto_increment primary key,
      `val`  varchar(255)      NOT NULL
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    INSERT INTO `testone` (`val`) VALUES
      ('un'),('deux'),('trois'),('quatre'),('cinq')
    --------------
     
    --------------
    select * from `testone`
    --------------
     
    +----+--------+
    | id | val    |
    +----+--------+
    |  1 | un     |
    |  2 | deux   |
    |  3 | trois  |
    |  4 | quatre |
    |  5 | cinq   |
    +----+--------+
    --------------
    DROP TABLE IF EXISTS `testtwo`
    --------------
     
    --------------
    CREATE TABLE `testtwo`
    ( `id`    integer unsigned  NOT NULL auto_increment primary key,
      `lib`   varchar(255)          NULL,
      `clef`  integer unsigned  NOT NULL,
      CONSTRAINT `FK_testone` FOREIGN KEY (`clef`) REFERENCES `testone` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    INSERT INTO `testtwo` (`clef`,`lib`) VALUES
      (1, 'one'),   (1, 'eins'),
      (2, 'two'),   (2, 'zwei'),
      (3, 'three'), (3, 'drei'),
      (5, 'five'),  (5, NULL)
    --------------
     
    --------------
    select * from  `testtwo`
    --------------
     
    +----+-------+------+
    | id | lib   | clef |
    +----+-------+------+
    |  1 | one   |    1 |
    |  2 | eins  |    1 |
    |  3 | two   |    2 |
    |  4 | zwei  |    2 |
    |  5 | three |    3 |
    |  6 | drei  |    3 |
    |  7 | five  |    5 |
    |  8 | NULL  |    5 |
    +----+-------+------+
    --------------
    select           t1.id,
                     t1.val,
                     count(*)                      AS nbre,
                     IF(COUNT(*) < 1, 0, COUNT(*)) AS NbPost
     
               from  `testone` as t1, `testtwo` as t2
              where  t2.clef = t1.id
     
           group by  t1.id, t1.val
           order by  t1.id
    --------------
     
    +----+-------+------+--------+
    | id | val   | nbre | NbPost |
    +----+-------+------+--------+
    |  1 | un    |    2 |      2 |
    |  2 | deux  |    2 |      2 |
    |  3 | trois |    2 |      2 |
    |  5 | cinq  |    2 |      2 |
    +----+-------+------+--------+
    --------------
    select           t1.id,
                     t1.val,
                     count(*)                      AS nbre,
                     IF(COUNT(*) < 1, 0, COUNT(*)) AS NbPost
     
               from  `testone` as t1
     
    left outer join  `testtwo` as t2
                 on  t2.clef = t1.id
     
           group by  t1.id, t1.val
           order by  t1.id
    --------------
     
    +----+--------+------+--------+
    | id | val    | nbre | NbPost |
    +----+--------+------+--------+
    |  1 | un     |    2 |      2 |
    |  2 | deux   |    2 |      2 |
    |  3 | trois  |    2 |      2 |
    |  4 | quatre |    1 |      1 |
    |  5 | cinq   |    2 |      2 |
    +----+--------+------+--------+
    --------------
    select           t1.id,
                     t1.val,
                     count(t2.id) AS nbre
     
               from  `testone` as t1
     
    left outer join  `testtwo` as t2
                 on  t2.clef = t1.id
     
           group by  t1.id, t1.val
           order by  t1.id
    --------------
     
    +----+--------+------+
    | id | val    | nbre |
    +----+--------+------+
    |  1 | un     |    2 |
    |  2 | deux   |    2 |
    |  3 | trois  |    2 |
    |  4 | quatre |    0 |
    |  5 | cinq   |    2 |
    +----+--------+------+
    --------------
    COMMIT
    --------------
     
    Appuyez sur une touche pour continuer...
    Je viens de comprendre plusieurs choses au sujet de la requête de ClaytonG :

    1) il utilise le produit cartésien au lieu d'utiliser une jointure externe.
    (voir ma première requête).

    2) il utilise le "count(*)" au lieu d'utiliser "count(t2.id)".
    (voir ma deuxième requête).

    3) la bonne solution est d'une part utiliser la jointure externe et d'autre part utiliser le "count(t2.id)", c'est-à-dire comptabiliser le nombre de lignes de la table jointe.
    (voir ma troisième requête).

    Ce que j'ai proposé, c'est transformer un NULL en la valeur 0, ce qui est une erreur dans lee problème de ClaytonG.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  14. #14
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 737
    Points
    52 737
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par ClaytonG Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT ID_Utilisateur, Pseudo_Utilisateur, Nom_Utilisateur, Prenom_Utilisateur, Etat_Utilisateur, 
           COUNT(COALESCE(a.Utilisateur_Article)) AS NbPost
    FROM   utilisateur u
    LEFT OUTER JOIN article a
    ON u.ID_Utilisateur = a.Utilisateur_Article
    GROUP  BY ID_Utilisateur, Pseudo_Utilisateur, Nom_Utilisateur, Prenom_Utilisateur, Etat_Utilisateur
    ORDER BY NbPost DESC
    Ce code marche a la perfection
    Le COALESCE ne sert à rien ici.

    Il faut écrire : COALESCE(COUNT(a.Utilisateur_Article), 0)

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/06/2012, 16h58
  2. [Java][debutant]select count(*) ne retourne rien !!
    Par Invité dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 24/01/2007, 11h39
  3. [MySQL] Requête qui ne retourne rien
    Par baleiney dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 28/06/2006, 18h29
  4. SELECT qui ne retourne rien à cause d'anti-slash
    Par mikyfpc dans le forum Outils
    Réponses: 8
    Dernier message: 07/08/2005, 23h04

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