2016-07-05 117 views
0

我有一個表的帖子,和一個表的朋友列表。MYSQL查詢多個表條件sql

Posts: 
id | PosterUsername | title | info1 | info2 | etc. 

Friends: 
user | friend | blocked(boolean) 

所以基本上我正在尋找一個SQL查詢,以便活動用戶只能查看由誰增加了爲朋友有人張貼的帖子,我可以篩選結果。

像..

SELECT * FROM Posts WHERE 
FROM Friends user = PosterUsername AND friend = 'activeUsername' AND BLOCKED = '0' 

我能想到的辦法,我基本存儲已加入「activeUser」作爲一個變量中朋友之間的整個列表,然後我通過循環顯示我可以檢查它的帖子,只顯示符合條件的帖子。但是我對MYSQL命令的進步不是很熟悉,我猜測還有更好的辦法。

更新:

enter image description here

+0

問題:是朋友關係雙向?我的意思是,「朋友」表中的條目意味着兩個朋友都處於關係中,或者它可能意味着單向關係? –

+0

試試這個:'SELECTION * FROM Posts INNER JOIN Friends ON(Posts.id = Friends.friend)WHERE user ='current user'AND blocked = 0;' –

+0

@TimBiegeleisen它可能是單向關係。它也可能是兩個......但目的是隻顯示帖子給海報朋友。 –

回答

-4

無需編寫實際的代碼,因爲我是我的手機上,你會想:

Select * 
from posts 
where posterid in (
    select friendid 
    from friends 
    where userid =loggedinuserid) 

類似的東西應該做的伎倆。這裏

+2

如果你無法寫出一個連貫的答案,因爲什麼原因,然後不要 – 2016-07-05 01:39:40

+0

Dagon什麼是不相干的消息? – Jeff

2

一種選擇是聯合起來的FriendsPosts表,與那些朋友寫的帖子連接用戶的朋友:

SELECT p.* 
FROM Friends f INNER JOIN Posts p 
    ON f.friend = p.PosterUsername 
WHERE f.user = 'current user' AND f.blocked = FALSE 
+0

我會研究這種方法,並讓你知道它是否有效,謝謝! –

+0

如果您添加一些示例數據,它將有助於確定您需要的確切查詢。 –