0

我在问之前已经搜索过,之前的热门答案对我的项目没有帮助

表结构

用户表

用户名 | 用户名

1|user1
2|user2
3|user3
4|user4
5|user5
6|user6

朋友桌

请求用户名 | 目标用户ID

1|3
1|4
1|6
3|2
3|5
2|4
2|1

现在好了,我的问题是:

如果用户 ID 1与用户 ID 2有关系,我只存储在用户表中,如:

1|2

并且不存储重复的

1|2
2|1

现在我需要检查 user-x 是 user-y 的朋友,如果两个是朋友 php 将返回 true,否则返回 false。如果我的数据库存储了重复的 1|2 和 2|1,则很有可能,但没有:(

如何处理一个查询?

4

2 回答 2

4

您可以使用OR.

SELECT 1 FROM friends WHERE (requestuserid = :id1 AND targetuserid = :id2) OR (requestuserid = :id2 AND targetuserid = :id1)

此查询将在失败时返回空集,在成功时返回 1。

于 2013-04-08T22:23:46.120 回答
1

如果用户是朋友,此查询将返回一行(OR用于忽略目标/请求用户是谁),如果他们不是朋友,则不返回任何内容:

SELECT * FROM users u1, users u2, friends f
WHERE u1.userid = ?u1 AND u2.userid=?u2
AND ((u1.userid=f.requestuserid AND u2.userid=f.targetuserid)
OR (u2.userid=f.requestuserid AND u1.userid=f.targetuserid))
于 2013-04-08T22:24:13.267 回答