大家好
我真的需要你的帮助。我必须获得所有用户的列表(不同的): - 在比赛中进行实时签到( checkins.ctype = 'live' ) - 他们最喜欢的球队(参见 fanusers_teams ) - 以 3 个或更多的进球差获胜。
最喜欢的球队,可能是 info_matches.team_id1 或 info_matches.team_id2 或两者兼而有之。
这是相关表格的一个小设计:

我尝试过的方法有效率为 80%(所以它不会 :( ),因为它返回了一些正确的用户(他们最喜欢的团队有 3 个以上的目标差异),但也返回了没有最喜欢的团队的用户我认为他们被退回是因为他们已经为一场比赛进行了现场签到,其中一支球队或另一支球队以 3+ 的进球差异获胜。
这是我的查询:
选择不同的
f.id
从
粉丝f
左连接
签入 c ON f.id = c.fanuser_id
左连接
info_matches m ON m.id = c.match_id
在哪里
c.ctype = 'live' 和
(
m.team_id1 IN(
选择不同的
m1.team_id1
从
info_matches m1
正确加入
fanusers_teams ft ON m1.team_id1 = ft.team_id
正确加入
fanusers f ON f.id = ft.fanuser_id
在哪里
m1.pointsteam1 - m1.pointsteam2 >= 3
)
或者
m.team_id2 IN(
选择不同的
m2.team_id2
从
info_matches m2
正确加入
fanusers_teams ft ON m2.team_id2 = ft.team_id
正确加入
fanusers f ON f.id = ft.fanuser_id
在哪里
m2.pointsteam2 - m2.pointsteam1 >= 3
)
)
如果有人成功解决了这个查询,我也会感谢我做错了什么。
谢谢。