2013-12-08 101 views
1

我有以下表格:多對多到許多查詢

用戶(ID,姓名,電子郵件) 如下(ID,follower_id,following_id) 後(ID,USER_ID,標題,正文)

現在遵循手段我(user_id = 23)跟隨另一個用戶(user_id = 12),也許還有幾個。

我想做一個查詢,它可以顯示我關注的所有人做的所有帖子。

單個查詢有可能嗎?

回答

0

當然,請確保您有適當的索引,否則可能需要一段時間!

SELECT `user`.`id` AS `user_id`, `user`.`name`, `post`.`id` AS `post_id`, `post`.`title`, `post`.`body` 
FROM `follow` 
JOIN `user` ON `user`.`id`=`follow`.`following_id` 
JOIN `post` ON `post`.`something...` # You're missing an "author" field in your posts table! 
WHERE `follow`.`following_id` = 23 
0

您在問題中沒有提及它,但是您必須有一個名爲poster_id的列來標識在Post表中發佈了哪些信息。有了這樣的,你可以這樣做:

SELECT p.* 
FROM posts p 
INNER JOIN follow f ON p.poster_id = f.following_id 
WHERE f.follower_id = 23; 

這會給你的用戶,然後用戶的所有帖子23

+0

poster_id實際上是post.user_id FK。 – nestedloop

+0

@nestedloop。那麼這應該會給你所有來自user_id = 23的帖子。 –