我有以下表格:多對多到許多查詢
用戶(ID,姓名,電子郵件) 如下(ID,follower_id,following_id) 後(ID,USER_ID,標題,正文)
現在遵循手段我(user_id = 23)跟隨另一個用戶(user_id = 12),也許還有幾個。
我想做一個查詢,它可以顯示我關注的所有人做的所有帖子。
單個查詢有可能嗎?
我有以下表格:多對多到許多查詢
用戶(ID,姓名,電子郵件) 如下(ID,follower_id,following_id) 後(ID,USER_ID,標題,正文)
現在遵循手段我(user_id = 23)跟隨另一個用戶(user_id = 12),也許還有幾個。
我想做一個查詢,它可以顯示我關注的所有人做的所有帖子。
單個查詢有可能嗎?
當然,請確保您有適當的索引,否則可能需要一段時間!
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
您在問題中沒有提及它,但是您必須有一個名爲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
poster_id實際上是post.user_id FK。 – nestedloop
@nestedloop。那麼這應該會給你所有來自user_id = 23的帖子。 –