2014-07-22 36 views
0

我正在爲我的網站創建一個新聞訂閱源,您正在關注的用戶的帖子,我想知道什麼是正確的語法來添加額外的條件到我的SQL語句,以顯示您自己的帖子在這種飼料也,一切我都試過導致一個錯誤,這是我當前的查詢:MySQL在JOIN語句中的額外條件

 SELECT posts.* 
     FROM posts 
INNER JOIN follow 
     ON posts.uid = follow.following_id 
     WHERE follow.follower_id = '$myUser' 
    ORDER BY posts.id DESC 
     LIMIT 10 

那麼,如何將添加一個條件也將顯示$ MYUSER變量的UID的職位?

編輯:

表結構:

帖子:

id | uid | message | date_posted 

如下:

id | follower_id | following_id 
+0

如果您有任何機會可以分享您當前查詢的結果集,可能有助於瞭解我們可以如何擴展它。 – AdamMc331

+0

我不明白這是必要的嗎?我需要的就是添加另一個例外,以便用用戶自己的ID以及他們所關注的人員返回帖子。 – SigmaDanny

+0

也許不是,我只是好奇。我分享了一個答案,你在where子句中嘗試了一個OR語句嗎? – AdamMc331

回答

1
SELECT  posts.* 

FROM  posts 
INNER JOIN follow ON posts.uid = follow.following_id 

WHERE  follow.follower_id = '$myUser' 
      OR 
      posts.uid = '$myUser' 

ORDER BY posts.id DESC LIMIT 10 
+0

它不應該是OR嗎? – SigmaDanny

+0

你可以標記它作爲答案,如果它幫助你:) – Torrezzzz

+0

是的,它應該是OR ... – MattRogowski

1

這將是很難說沒有你的數據庫結構的概述,但一個好的開始將是將聯接改爲左聯接,並添加一個條件來檢查我在帖子表中假設的自己的ID。所以,也許:

SELECT posts.* FROM posts LEFT JOIN follow ON posts.uid = follow.following_id WHERE (follow.follower_id = '$myUser' OR posts.user_id = '$myUser') ORDER BY posts.id DESC LIMIT 10

這可能是地方開始。

+0

用這個沒什麼區別,還是隻顯示我以下的人的帖子,不是我自己的。 – SigmaDanny

+0

就像我說的,我們真的需要某種數據庫結構。查詢的第二部分只需要檢查存儲誰創建帖子的ID的位置。 – MattRogowski

+0

我將用結構更新我的問題,我認爲從查詢中可以理解。 – SigmaDanny

1

我相信你想要使用OR子句,所以你會收到任何帖子從追隨者或用戶。如果你使用了AND,它會返回一個帖子,其ID和追隨者以及用戶,這可能不會返回任何內容。

所以這個:

SELECT posts.* FROM posts INNER JOIN follow ON posts.uid = follow.following_id WHERE follow.follower_id = '$myUser' ORDER BY posts.id DESC LIMIT 10 

將成爲:

SELECT posts.* FROM posts INNER JOIN follow ON posts.uid = follow.following_id WHERE follow.follower_id = '$myUser' OR posts.uid = '$myUser' ORDER BY posts.id DESC LIMIT 10 

不幸的是,我現在不能測試此權利,但我希望,如果它不工作,它至少有助於點你在正確的方向。

+0

似乎沒有任何區別,但感謝回覆。 – SigmaDanny

+0

對不起,我似乎無法弄清楚這一點。讓我知道你是否曾經得到過解決方案,但我會把它留在我的腦後。 – AdamMc331