Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.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_Postgresql - Fatal编程技术网

查询以查找";“朋友之友”;SQL

查询以查找";“朋友之友”;SQL,sql,database,postgresql,Sql,Database,Postgresql,我在sql方面遇到了一些问题 我有一个包含3列的表:user\u id、name、friend\u id 我需要为每个用户找到其朋友的朋友,但不是朋友!结果架构应该是用户id |建议的用户id 我已经搜索了答案,但问题是用户和朋友在同一张表中!我对postgresql不是很在行,所以如果我不清楚或者这很简单,请原谅,但我真的需要帮助 非常感谢将是这样的: select DISTINCT u1.user_id as user_id,u3.user_id as suggested_user_

我在sql方面遇到了一些问题

我有一个包含3列的表:user\u id、name、friend\u id

我需要为每个用户找到其朋友的朋友,但不是朋友!结果架构应该是用户id |建议的用户id

我已经搜索了答案,但问题是用户和朋友在同一张表中!我对postgresql不是很在行,所以如果我不清楚或者这很简单,请原谅,但我真的需要帮助


非常感谢

将是这样的:

select DISTINCT
    u1.user_id as user_id,u3.user_id as suggested_user_id
    from
    users as u1 
    inner join users as u2 on u1.user_id=u2.friend_id
    inner join users as u3 on u2.user_id=u3.friend_id
where u1.user_id<>u3.user_id
选择DISTINCT
u1.user\u id作为用户id,u3.user\u id作为建议用户id
从…起
用户身份为u1
将用户作为u1上的u2进行内部连接。用户\u id=u2.friend\u id
将用户作为u2上的u3进行内部连接。用户\u id=u3.friend\u id
其中u1.user\u idu3.user\u id

它将是这样的:

select DISTINCT
    u1.user_id as user_id,u3.user_id as suggested_user_id
    from
    users as u1 
    inner join users as u2 on u1.user_id=u2.friend_id
    inner join users as u3 on u2.user_id=u3.friend_id
where u1.user_id<>u3.user_id
选择DISTINCT
u1.user\u id作为用户id,u3.user\u id作为建议用户id
从…起
用户身份为u1
将用户作为u1上的u2进行内部连接。用户\u id=u2.friend\u id
将用户作为u2上的u3进行内部连接。用户\u id=u3.friend\u id
其中u1.user\u idu3.user\u id

它将是这样的:

select DISTINCT
    u1.user_id as user_id,u3.user_id as suggested_user_id
    from
    users as u1 
    inner join users as u2 on u1.user_id=u2.friend_id
    inner join users as u3 on u2.user_id=u3.friend_id
where u1.user_id<>u3.user_id
选择DISTINCT
u1.user\u id作为用户id,u3.user\u id作为建议用户id
从…起
用户身份为u1
将用户作为u1上的u2进行内部连接。用户\u id=u2.friend\u id
u2上的内部连接用户为u3.user\u id=u3.friend\u id
其中u1.user\u idu3.user\u id

它将是这样的:

select DISTINCT
    u1.user_id as user_id,u3.user_id as suggested_user_id
    from
    users as u1 
    inner join users as u2 on u1.user_id=u2.friend_id
    inner join users as u3 on u2.user_id=u3.friend_id
where u1.user_id<>u3.user_id
选择DISTINCT
u1.user\u id作为用户id,u3.user\u id作为建议用户id
从…起
用户身份为u1
将用户作为u1上的u2进行内部连接。用户\u id=u2.friend\u id
将用户作为u2上的u3进行内部连接。用户\u id=u3.friend\u id
其中u1.user\u idu3.user\u id

执行自联接,即将表与自身联接:

select t1.user_id, t1.name, t2.friend_id as suggested_user_id
from usertable t1
  join usertable t2 on t1.friend_id = t2.user_id 
也许你想补充一点

 where t1.user_id <> t2.friend_id 
其中t1.user\u id t2.friend\u id

为避免将用户列为自己的朋友。

进行自联接,即用表本身联接表:

select t1.user_id, t1.name, t2.friend_id as suggested_user_id
from usertable t1
  join usertable t2 on t1.friend_id = t2.user_id 
也许你想补充一点

 where t1.user_id <> t2.friend_id 
其中t1.user\u id t2.friend\u id

为避免将用户列为自己的朋友。

进行自联接,即用表本身联接表:

select t1.user_id, t1.name, t2.friend_id as suggested_user_id
from usertable t1
  join usertable t2 on t1.friend_id = t2.user_id 
也许你想补充一点

 where t1.user_id <> t2.friend_id 
其中t1.user\u id t2.friend\u id

为避免将用户列为自己的朋友。

进行自联接,即用表本身联接表:

select t1.user_id, t1.name, t2.friend_id as suggested_user_id
from usertable t1
  join usertable t2 on t1.friend_id = t2.user_id 
也许你想补充一点

 where t1.user_id <> t2.friend_id 
其中t1.user\u id t2.friend\u id


避免将用户列为自己的朋友。

MySQL和Postgresql都可以吗?不要给未涉及的产品贴标签。。。另外,我建议使用一个用户表(userid和name)和一个单独的友谊表;我不能改变桌子,这就是我需要帮助的原因(MySQL和Postgresql?不要标记未涉及的产品…另外,我建议使用一个用户表(userid和name)和一个单独的友谊表。好的,谢谢你的建议;我不能更改该表,这就是我需要帮助的原因!:(MySQL和Postgresql?不要标记未涉及的产品…另外,我建议使用一个用户表(userid和name),和一个单独的友谊表。好的,谢谢你的建议;我不能更改该表,这就是我需要帮助的原因!:(MySQL和Postgresql?不要标记未涉及的产品…另外,我建议使用一个用户表(userid和name)和一个单独的友谊表。好的,谢谢你的建议;我不能更改该表,这就是我需要帮助的原因!:(您还需要检查
u3.user\u id
是否不是
u1
的直接朋友(如果
u1
u2
都有一个“直接”朋友)。好的,谢谢,另一个小问题:如何避免重复?因为在结果中,我多次看到user1与同一个建议的朋友…添加了不同的关键字来解决重复。我们最终会到达那里…:)哇,我现在觉得自己太蠢了,非常感谢,很抱歉,我的名声不允许我对答案投赞成票!!你还需要检查
u3。用户id
不是
u1
的直接朋友(在这种情况下
u1
u2
都有一个“直接”朋友)。好的,谢谢,另一个小问题:如何避免重复?因为在结果中,我多次看到user1与同一个建议的朋友…添加了不同的关键字来解决重复。我们最终会到达那里…:)哇,我现在觉得自己太蠢了,非常感谢,很抱歉,我的名声不允许我对答案投赞成票!!你还需要检查
u3。用户id
不是
u1
的直接朋友(在这种情况下
u1
u2
都有一个“直接”朋友)。好的,谢谢,另一个小问题:如何避免重复?因为在结果中,我多次看到user1与同一个建议的朋友…添加了不同的关键字来解决重复。我们最终会到达那里…:)哇,我现在觉得自己太蠢了,非常感谢,很抱歉,我的名声不允许我对答案投赞成票!!你还需要检查
u3。用户id
不是
u1
的直接朋友(在这种情况下
u1
u2
都有一个“直接”朋友).好的,谢谢你,另一个小问题:我如何避免重复?因为在结果中,我多次看到user1与同一个建议的朋友…添加了不同的关键字来解决重复。我们最终会到达那里…:)哇,我现在觉得很愚蠢,非常感谢,很抱歉,但我的声誉不允许我投票赞成答案!!