[英]database - Inner join with 3 tables in mysql issue
我正在做一個喜歡的系統,該系統允許用戶將帖子保存到他們的頁面。
我正在使用的表是:
saved_posts
表表包含3列( painned_id``user_id``post_id
)
users
包含( user_id
, frist_name
, last_name
, username
, email
, password
, user_website
, user_avatar
)
最后posts
表格( post_id
, user_id
, post_author
, category_id
, post_date
, post_image
, post_avatar
, user_website
, post_keywords
, post_content
)
我用來獲取已保存的posrt的sql代碼
SELECT * FROM posts INNER JOIN saved_posts
ON saved_posts.post_id =
posts.post_id INNER JOIN users on saved_posts.user_id = users.user_id WHERE
saved_posts.user_id = users.user_id AND saved_posts.post_id = posts.post_id
問題是,一個用戶的已保存帖子對其他用戶來說就像他們也保存了它們一樣。
如果我正確理解了該問題,則任務是選擇所有帖子中的哪些用戶
SELECT * FROM posts p
INNER JOIN saved_posts sp ON p.post_id = sp.post_id
and sp.user_id = u.user_id
INNER JOIN users u on p.user_id = u.user_id
您不應該使用WHERE
條件過濾答案嗎? 否則,它只是查找任何用戶共享EVER的所有帖子。
SELECT * FROM posts
INNER JOIN saved_posts
ON saved_posts.post_id = posts.post_id
INNER JOIN users
ON saved_posts.user_id = users.user_id
WHERE users.user_id = :wanted_user_id
不要忘記綁定wanted_user_id
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.