鉴于特定用户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
,我如何归还所有共享该位置的用户?
答案 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