php - 在 php/mysql 中显示对其他人隐藏的 friend 项目列表的最佳方式

标签 php mysql

如果项目标记为 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/

相关文章:

php - 用PHP替换数组中的字符串

php - 使用 Mimes 验证 Laravel 文件发布 - Word 文件

php - Laravel 服务类在没有服务提供者的情况下也能工作吗?

javascript - 从 php 脚本获取数据到 javascript 并使用它

php - 我可以在 PHP 中混合使用 MySQL API 吗?

mysql - MyBatis 更新查询中的额外逗号

php - 比较两个数组并获得所有差异

mysql - COUNT 的 SQL 问题

mysql - 如何从单个连接表展平层次结构

php - Ajax 未在实时服务器上加载帖子,但在本地主机上运行