如果项目标记为 status = 1,我会向所有人显示一个项目列表 添加项目时,它们的状态也可以为 0,这意味着它们对所有人都是不可见的,除非您是提交该项目的用户的 friend 。友谊用户 ID 对存储在不同的表中。
friend 表有 3 列:friends_inviter、friends_accepter、friends_status(如果 friends_status = 1 他们是 friend )。发起好友的用户(ID)为邀请者,接受好友的用户为接受者。因此,您 friend 的 ID 可以出现在任一列中。
items 表(对于此示例)也有 3 列:item_id、item_status、item_owner
显示出现在您的 friend 列表中的用户的状态 = 1 项目以及状态 = 0 项目的列表的最佳方式是什么。
最佳答案
我的主张:
SET @userID = 1;
SELECT i.*
FROM items i
WHERE i.status = 1
OR (
i.status=0
AND
i.user_id IN (
SELECT f.inviter_id FROM friends f WHERE f.accepter_id = @userID AND f.status = 1
UNION
SELECT f.accepter_id FROM friends f WHERE f.inviter_id = @userID AND f.status = 1
)
)
[+] 我没有注意到你的编辑,但这需要你的项目表也有列来区分谁添加了这个项目
关于php - 在 php/mysql 中显示对其他人隐藏的 friend 项目列表的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5998362/