2009-09-02 9 views
2

Voici ce que je dois chercher:
- postes qui ont des commentaires
- nombre de commentaires par poste
- Nombre de commentaires non lus par message (Exprimé par une colonne "read" bool dans le tableau "comments")Besoin d'aide pour ajouter un nombre conditionnel() à une requête déjà en utilisant JOIN

La dernière partie est ce qui me pose problème.
Voici mon SQL jusqu'à présent:

SELECT
posts.id
, posts.title
, COUNT (comments.id) AS commentsCount
de messages
INNER JOIN commentaires sur les commentaires
.postID = posts.id
GROUPE PAR
posts.id
COMMANDER PAR
comments.createDate

CEEPC

Cela fonctionne bien jusqu'à présent, mais je dois COUNT() combien de commentaires ont leur champ « lu » égal à 0. Je ne sais pas comment effectuer ce comptage supplémentaire () dans la requête existante.

Merci d'avance!

Répondre

3

Que diriez-vous

SUM(CASE comments.Read WHEN 0 THEN 1 ELSE 0 END) 
+0

Cela a fonctionné parfaitement, merci! Je ne connais pas CASE, j'ai des recherches à faire :) –

2
SELECT 
    p.id 
    , p.title 
    , COUNT(c.id) AS commentsCount 
    , SUM(CASE c.IsRead WHEN 0 THEN 1 ELSE 0 END) AS commentsRead 
    , SUM(CASE c.IsRead WHEN 0 THEN 0 ELSE 1 END) AS commentsUnRead 
FROM 
    posts p 
INNER JOIN 
    comments c 
ON 
    c.postID = p.id 
GROUP BY 
    p.id 
ORDER BY 
    c.createDate DESC 
Questions connexes