我有三张桌子左边加入。其中两个人将uid作为用户ID。问题是每次执行查询都需要相同的用户ID。
请检查表结构
-------------------------------------
|Users |posts |favorites |
|-----------|-----------|-----------|
|user_id |id |id |
|username |title |uid |
|password |post |post_id |
| |uid | |
| |favorites | |
-------------------------------------
MySQL查询
SELECT * FROM favorites
LEFT JOIN users ON users.user_id = favorites.uid
LEFT JOIN posts ON favorites.posts_id = posts.id
WHERE favorites.uid='$id' and posts.active=1
请注意$ id是个人资料所有者(用户)ID。任何帮助将不胜感激。
答案 0 :(得分:1)
如果表格如下(我已重命名为user_id
,post
和favorites
列,以便根据我的理解来澄清其角色。
-------------------------------------
|Users |posts |favorites |
|-----------|-----------|-----------|
|id |id |id |
|username |title |uid |
|password |post_text |post_id |
| |uid | |
| |fav_id | |
-------------------------------------
这个sql代码可以用来获得你想要的东西
SELECT * FROM favorites
LEFT JOIN posts ON favorites.id = posts.fav_id
LEFT JOIN users ON posts.uid = users.id
WHERE favorites.uid='$id' and posts.active=1
这应该从给定用户ID的三个表中获取最喜欢帖子的所有详细信息。希望它适合你。
答案 1 :(得分:0)
嘿,你可以试试这次吗
SELECT posts.*, favorites.post_id, users.username FROM favorites LEFT JOIN users ON favorites.uid = users.user_id LEFT JOIN posts ON favorites.post_id = posts.id
WHERE users.user_id='$id' and posts.active=1
由于查询中存在拼写错误,我对您的代码进行了一些更改
答案 2 :(得分:0)
此查询可能会解决您的问题。
SELECT * FROM post p
LEFT JOIN (SELECT * FROM users u LEFT JOIN favorites f ON u.user_id = f.id) as tbl1
WHERE p.id=tbl1.post_id and p.uid = $uid and p.active=1