【发布时间】:2011-11-26 03:14:49
【问题描述】:
表:
- 活动:id、userId、description、objectId
- 用户:ID、姓名
- usersFriends、id、userId、friendUserId
- 对象:ID、名称
当前查询:
SELECT A.*, U.*
FROM usersFriends UF
JOIN activities A ON A.userId = UF.friendUserId
JOIN users U ON U.id = A.userId
WHERE A.objectId = x
当前查询的问题是,如果用户有匹配的朋友,例如:
- 用户 1:提姆
- 用户 2:瑞安
- 用户 3:艾伦
- 用户 4:查理
蒂姆是查理的朋友 ryan 和 charlie 是朋友
我们得到了对象 X 的活动,但是我们得到了所有活动的两倍,因为 tim 是 charlie 的朋友,ryan 是 charlie 的朋友,所以我需要某种不同的?
感谢您的帮助!
【问题讨论】:
-
您使用的是什么版本的 SQL?该查询似乎不适用于任何方言...
-
哎呀,这是错误的,已修复!
-
@user1066101 - 你为什么要使用
UserFriends表?,看起来你不需要它。还是您只想要与其他用户成为朋友的用户的活动? -
你只想要活动(或者你也想要朋友)?如果您显示几个预期的输出行会有所帮助。如果你想要的只是活动,你可以简单地使用 SELECT DISTINCT A.* 来获得不同的活动