SQL:返回访问同一位置的用户列表

时间:2015-07-06 13:53:52

标签: mysql sql

鉴于特定用户x,我想找到其他用户访问过用户所去过的所有地方的内容。为此,我想我需要两次查询同一个表并执行连接以查找匹配的记录,但到目前为止我没有运气。

考虑以下简化表结构:

----- VISITATION -----
visitationId        PK
placeId             FK  <-- The place that was visited
userId              FK  <-- The user who visited this place

我不需要从这些外国表格中提取任何信息,现在我只想要一个与用户x访问同一地点的userId列表

----- RESULT -----
placeId      userId
   1            2
   1            3
   1            1
   4            1
   4            5
   5            8

如果我以用户1的身份登录,我希望返回用户2,3和5,不会返回8,因为他在特定地点没有与1的关系。

为了解决这个问题,我尝试了以下查询:

SELECT x.userId, 
       y.userId 
FROM   visitation x
JOIN
       visitation y
ON 
       y.placeId = x.placeId
WHERE 
       x.userId = 1
GROUP 
   BY  x.userId

目前只返回1,我如何归还所有共享该位置的用户?

2 个答案:

答案 0 :(得分:2)

这是一种方法。您可以加入 placeid ,然后确保所有匹配:

ERROR:  invalid input syntax for type double precision: "point(x y)"
LINE 1: ...ext(st_line_interpolate_point(st_geometryN(geo,1),'point(x y...

答案 1 :(得分:1)

您可以使用登录的userid作为参数执行以下操作:userid。

SELECT distinct(y.userid)
   FROM visitation x inner join visitation y on x.placed=y.placed
 WHERE x.userid=:userid