2014-04-01 25 views
1

我有2個簡單的表格選擇文章,選擇文章喜歡只有文章喜歡的(如果沒有與用戶ID排在第喜歡)

第一臺

Articles 
================ 
ID 
Title 
Content 

和第二臺時間

Article_Likes 
================ 
ArticleID (FK) 
UserID 
Time 

我要選擇文章標題,內容,喜歡的時間只有當用戶喜歡的文章(如果在Article_Likes表中有一行)

這是我的代碼,它返回文章並且喜歡時間OK。但是如果Article_Likes中沒有行(他不喜歡),我會得到空的結果。

如何選擇文章,即使他不喜歡。但是如果他喜歡,也選擇喜歡的時間呢? 請幫忙。謝謝

SELECT 
    Article.ID, 
    Article.Title,          
    Article.Content, 
    Article_Likes.Time 
FROM Articles 
    INNER JOIN Article_Likes ON Articles.ID = Article_Likes.PostID 
WHERE Article.ID = (ArticleID) 
    AND Article_Likes.UserID = (UserID) 
LIMIT 1 

編輯此查詢的工作請檢查syntacsis

SELECT Article.ID, 
    Article.Title, 
    Article.Content, 
    COALESCE(Article_Likes.Time,'NOT LIKED') AS Time 
FROM Articles 
    LEFT JOIN Article_Likes ON Article.ID = Article_Likes.ArticleID AND Article_Likes.UserID = (UserID) 
WHERE Article.ID = (ArticleID) 
    LIMIT 1 

回答

0

嘗試:

SELECT 
    Article.ID, 
    Article.Title,          
    Article.Content, 
    COALESCE(Article_Likes.Time,'NOT LIKED') AS Time 
FROM Articles 
    LEFT JOIN Article_Likes ON Article.ID = Article_Likes.ArticleID 
WHERE Article.ID = (ArticleID) 
LIMIT 1 
+0

謝謝,作爲迴應,但我得到空的結果,你能建議什麼嗎? – user3395525

+0

@ user3395525:如果您沒有通過此查詢得到您想要的內容,我建議您顯示所有表格的示例數據,包括「Posts」和「Post_Likes」。 –

+0

抱歉等待。我寫了新的問題。它由你和@ AK47的答案組合而成。它的工作原理,無論如何,請檢查syntacsis。這是對的嗎?謝謝 – user3395525

0

insted的內,使用左連接。由於內部聯接顯示兩個表中都存在的值,因此無論何時希望左側表(文章)中的所有記錄均使用LEFT JOIN。

SELECT 
    Article.ID, 
    Article.Title,          
    Article.Content, 
    Article_Likes.Time 
FROM Articles 
    LEFT JOIN Article_Likes ON Posts.ID = Post_Likes.PostID 
       AND Post_Likes.UserID = (UserID) 
WHERE Article.ID = (ArticleID) 
+2

感謝響應,我得到空的結果呢。 – user3395525

+0

對不起,對於不正確的答案,現在我編輯了我的答案。請檢查。 Where子句中不應包含Right表中的任何條件。在你的情況下,它在那裏(和Post_Likes.USE ....) – AK47

+0

對不起,等待。我寫了新的問題。它由你和@Raging Bull的答案組合而成。它的工作原理,無論如何,請檢查syntacsis。這是對的嗎?謝謝 – user3395525

相關問題