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 :

(débutant) Requête COUNT


Sujet :

Langage SQL

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2004
    Messages : 27
    Par défaut (débutant) Requête COUNT
    Bonjour,

    Je débute en MYSQL et je n'arrive pas à formuler une requête qui, je le suppose, doit s'effectuer avec COUNT.

    Il s'agit d'un système de news et commentaires.
    J'ai donc deux tables NEWS et COMMENTS.

    Donc en gros :

    "NEWS"

    ID - TEXTE
    -----------
    1 - NEWS 1
    2 - NEWS 2
    etc.

    "COMMENTS"

    ID - IDNEWS - COMMENTAIRE
    -------------------------------------
    1 - 1 - COMMENTAIRE 1 SUR NEWS1
    2 - 1 - COMMENTAIRE 2 SUR NEWS1
    etc.

    Sur une page d'intro, je liste les titres des 10 derniers articles avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     SELECT titres FROM news ORDER BY id DESC LIMIT 0,10
    J'ai donc ma liste qui se présente normalement mais j'aimerais qu'à côté de chacun des titres de mes articles s'affiche le nombre de commentaires qu'il a suscités.

    Je suppose donc que je dois compter dans COMMENTS le nombre de lignes où IDNEWS correspond aux 10 ID des articles ramenés depuis ma table NEWS.

    Mais j'avoue que je ne vois pas trop comment m'y prendre, surtout si je veux ramener les 10 résultats en une fois.

    Des idées? Des suggestions? Des pistes? Des conseils?

    Merci d'avance !

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 130
    Par défaut
    Bonsoir

    Peut-être quelque chose comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT T1.titres,T2.Count(*) 
    FROM news T1 LEFT JOIN comments T2 ON (T1.id=T2.IdNews) 
    ORDER BY T1.id DESC LIMIT 0,10

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2004
    Messages : 27
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT news.news_id, COUNT(*) FROM comments LEFT JOIN news ON (comments.news_id = news.news_id) GROUP BY news_id ORDER BY news_id DESC LIMIT 0,10
    Fonctionne mais n'affiche pas les résultats lorsque Count renvoie 0 ...

    Par contre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     SELECT news.news_id,titre, COUNT( comments.news_id ) FROM news LEFT JOIN comments USING ( news_id ) GROUP BY news.news_id ORDER BY news_id DESC LIMIT 0,10";
    Renvoie exactement ce que je voulais en espérant que la syntaxe soit optimale, si vous pensez qu'il existe mieux, je suis preneur mais pour ma part, je ne vois pas :-)

    Merci

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

Discussions similaires

  1. [Procs stockées] [Débutant] Requête dynamique
    Par stailer dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 25/04/2005, 14h29
  2. PB avec une requête Count
    Par Marion dans le forum ASP
    Réponses: 7
    Dernier message: 05/07/2004, 12h56
  3. [débutant] requête
    Par ber_jp dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 04/06/2004, 20h38
  4. [débutant] Jointure + Count
    Par Yann21 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 28/10/2003, 13h52

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