gpt4 book ai didi

php - mysql 联系人列表查询

转载 作者:行者123 更新时间:2023-11-29 14:40:04 27 4
gpt4 key购买 nike

我正在制作一个 codeigniter Web 应用程序,用户可以在其中将彼此添加到联系人列表中。

表格如下所示:

`id` int(11) NOT NULL AUTO_INCREMENT,
`user_1` int(11) NOT NULL,
`user_2` int(11) NOT NULL,
`accepted` tinyint(2) NOT NULL,
PRIMARY KEY (`id`)

发出添加联系人请求的用户的userid始终存储在user_1列中。其他用户userid存储在user_2中。然后,user_2 必须接受请求,并且“已接受”列将更新为 1

我想在一个 html 表中列出所有已接受的联系人(已接受 = 1),并在另一个表中列出联系人请求(已接受 = 0)。我的问题是:如何进行 mysql 查询来选择所有行并从联系人中获取用户 ID?这是一个问题,因为他们可以是 user_1user_2(取决于他们是否请求或接受)。

我应该以某种方式更改数据库表来实现这一目标吗?或者我可以进行查询(最好是事件记录)来完成此任务?

感谢任何帮助

提前致谢

乔治

更新:

所以最终的查询如下所示:

SELECT DISTINCT users.id, users.username, contacts.accepted 
FROM users
LEFT JOIN contacts ON users.id = contacts.user_1
WHERE contacts.user_2 = ' . $this->session->userdata('user_id') . '
UNION DISTINCT
SELECT DISTINCT users.id, users.username, contacts.accepted
FROM users
LEFT JOIN contacts ON users.id = contacts.user_2
WHERE user_1 = ' . $this->session->userdata('user_id')

并且工作原理与我描述的完全一样:)

最佳答案

使用UNION 查询。请参阅documentation .

SELECT DISTINCT user_1 userid FROM user WHERE accepted = 1
UNION DISTINCT
SELECT DISTINCT user_2 userid FROM user WHERE accepted = 1

关于连接,您可以对 UNION 的每个部分使用如下所示的内容

SELECT DISTINCT users.userid, users.username, contacts.accepted 
FROM users
LEFT JOIN contacts ON users.userid = contacts.user_1
WHERE contacts.user_2 = ?

关于php - mysql 联系人列表查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8151744/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com