Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL选择位置_Sql_Database - Fatal编程技术网

SQL选择位置

SQL选择位置,sql,database,Sql,Database,我有一张这样的桌子 UserFriends Id UserId RequestId Status 1 1 2 1 2 1 3 1 3 1 4 0 4 3 2 1 5 3

我有一张这样的桌子

UserFriends
Id        UserId        RequestId       Status
1         1             2               1
2         1             3               1
3         1             4               0
4         3             2               1
5         3             4               1
基本上,结构是如果状态为0,请求不被接受,否则1被接受,他们是朋友

我正在尝试做得到用户2的朋友我该怎么做

重要编辑:
我正在尝试获取用户3的朋友。你知道如果用户1添加了用户3他们是朋友,用户3添加了2和4他们也是朋友(用户3朋友必须返回1、2和4这是基本的解释)

如果我读得正确,友谊的特征是用户邀请另一个用户或该用户被其他用户邀请,并且在这两种情况下请求都被接受。如果是这样,那么下面的
UNION
查询应该给出预期的结果:

SELECT RequestId
FROM UserFriends
WHERE UserId = 3 AND Status = 1
UNION
SELECT UserId
FROM UserFriends
WHERE RequestId = 3 AND Status = 1
我在这里使用
UNION
,因为如果一对用户相互邀请,或者如果一个邀请被发送了不止一次,那么一个给定的用户可能会多次作为朋友出现。我假设您不想将同一用户作为朋友报告多次

输出:

此处演示:


如果我读对了,友谊的特征是一个用户邀请另一个用户,或者该用户被其他用户邀请,并且在这两种情况下请求都被接受。如果是这样,那么下面的
UNION
查询应该给出预期的结果:

SELECT RequestId
FROM UserFriends
WHERE UserId = 3 AND Status = 1
UNION
SELECT UserId
FROM UserFriends
WHERE RequestId = 3 AND Status = 1
我在这里使用
UNION
,因为如果一对用户相互邀请,或者如果一个邀请被发送了不止一次,那么一个给定的用户可能会多次作为朋友出现。我假设您不想将同一用户作为朋友报告多次

输出:

此处演示:


是发出请求的用户的
RequestId
吗?因为如果是这样,他已经有两个朋友了(
Id=1
Id=4
)我的问题是这里的用户1在第一行添加了用户2和状态1,但我不想再添加这个记录,就像用户2添加了用户1和状态1用户向请求者发出请求一样。你可以做一些案例陈述,从中得到
UserId
RequestId
中的任何一个不是用户2。但是我更希望有一个包含
UserId
Friends
的表。
RequestId
是发出请求的用户的
UserId
?因为如果是这样,他已经有两个朋友了(
Id=1
Id=4
)我的问题是这里的用户1在第一行添加了用户2和状态1,但我不想再添加这个记录,就像用户2添加了用户1和状态1用户向请求者发出请求一样。你可以做一些案例陈述,从中得到
UserId
RequestId
中的任何一个不是用户2。但是我更希望有一个带有
UserId
Friends
的表。我大概一分钟前就这样做了:)。无论如何,这是正确的答案,谢谢你的努力和时间:)我是这样做的,也许一分钟前:)。无论如何,这是正确的答案,谢谢你的努力和时间:)