2016-08-09 129 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