2017-03-16 10 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のみが存在し、私はここで最後のものの後に好きやコメントがないとの記事が欲しいですスクリーンショットは、あなただけの記事は、少なくとも1のように、コメントを持っている人まで示されていることを観察することができます

ここ

enter image description here

です。私は好きでもコメントでも記事を入手したい

誰も私の問題を解決することはできますか、事前に感謝?

答えて

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 

は、それが

関連する問題