2017-03-16 31 views
1

在downvoting之前,看看我的问题。Mysql查询不返回没有喜欢或没有评论的文章

我正在我的文章网站上工作。我的网站上有一个部分显示流行文章。流行文章基于喜欢和评论。我使用下面的查询显示热门文章:

select 
    s.id as story_id, 
    s.title as story_title, 
    COUNT(l.id) as total_likes, 
    COUNT(cm.id) as total_comments 
from 
    stories s 
right outer join 
    likes l 
on 
    s.id = l.type_id 
right outer join 
    comments cm 
on 
    cm.story_id = s.id 

group by s.id 

order by total_likes desc,total_comments desc 

我收到了普遍的文章,但只有5,文章表示,但只有5个,我想最后一次在此之后没有喜欢或评论文章是截图

enter image description here

在这里,你可以观察到的唯一的文章显示了谁拥有至少1状或评论。我想得到没有喜欢或评论的文章

任何人都可以解决我的问题,在此先感谢?

回答

2

这也将返回不喜欢或评论的故事(你应该使用左连接):

select 
     s.id as story_id, 
     s.title as story_title, 
     COUNT(l.id) as total_likes, 
     COUNT(cm.id) as total_comments 
    from stories s 
    left join likes l on s.id = l.type_id 
    left join comments cm on cm.story_id = s.id 

    group by s.id, s.title 
    order by total_likes desc,total_comments desc 
+0

谢谢你,让我看看 –

+0

它的工作原理感谢@scaisEdge。 –

+0

@Ilyaskarim好,如果我的回答是正确的,请将其标记为已接受...看到这里如何 http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – scaisEdge

2

您对使用左加入此。这应该工作:

select 
     s.*, 
     COUNT(l.id) as total_likes, 
     COUNT(cm.id) as total_comments 
    from stories articles 
    left join likes l on articles.id = l.type_id 
    left join comments cm on cm.story_id = s.id 

    group by articles.id, articles.title 
    order by total_likes desc,total_comments desc 

希望它可以帮助