2016-08-09 127 views
0

如何选择数据库中有喜欢的所有职位。而且我还希望所有没有喜欢的帖子都列在同一个SQL查询中。喜欢被存储在一个表和每个表conncted到后与外键从数据库中选择所有的喜欢和不喜欢

SELECT likes.*, posts. * , profile . *, credentials.username, posts.session_sessionid as sSession 
FROM likes, posts, follows, profile, credentials 
WHERE follows.users = posts.userId 
AND profile.userId= follows.users 
AND profile.userId = credentials.profle_userId 
AND posts.session_sessionId IS NOT NULL 
AND likes.idposts = posts.idposts ORDER BY posts.date DESC` 

回答

3

使用outer join代替。如果你想给like count添加到结果,一个选择是使用其它子查询,以获得count

SELECT likes.*, t.likecount, posts.* ,profile.*, credentials.username, 
     posts.session_sessionid as sSession 
FROM posts 
    join follows on follows.users = posts.userId 
    join profile on profile.userId= follows.users 
    join credentials on profile.userId = credentials.profle_userId 
    left join likes on likes.idposts = posts.idposts 
    left join (
     select idposts, count(*) likecount 
     from likes 
     group by idposts 
    ) t on t.idposts = posts.idposts 
WHERE posts.session_sessionId IS NOT NULL 
ORDER BY posts.date DESC` 

一般来说,我不会推荐的from子句中使用逗号。

+0

有没有什么办法让我的查询计算表中的行喜欢?我试过'count(likes。*)'但是我得到一个错误。 – TheZozoOwner

+0

@TheZozoOwner - 只需使用子查询添加另一个“外部联接”来对每个帖子的喜欢进行计数。编辑向你展示一个例子。 – sgeddes