表结构
USERS TABLE
userid |用户名
1|user1
2|user2
3|user3
4|user4
5|user5
6|user6
FRIEND TABLE
requestuserid | targetuserid
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是用户-y的朋友,如果两个是朋友php将返回true,false else。 很可能,如果我的数据库存储重复1 | 2和2 | 1,但没有:(
如何处理一个查询?
答案 0 :(得分:4)
您可以使用OR
。
SELECT 1 FROM friends WHERE (requestuserid = :id1 AND targetuserid = :id2) OR (requestuserid = :id2 AND targetuserid = :id1)
此查询将在失败时返回空集,并在成功时返回1。
答案 1 :(得分: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))