具有连接的特定选择

时间:2012-12-12 11:28:45

标签: mysql join

每个人,

我正在尝试获取DISTINCT用户ID的列表:

  • 进行了现场检查
  • 和我一样的match_id
  • 是我的朋友(他们的fb_user_uid在我的fb_friends字段中)
  • 并且超过3个(正如我所说,在同一场比赛中)

这是DB的设计。

enter image description here

带有值的字段fb_friends的示例: 1430344176,646668302,1471539456,546098131

我已经检索了超过3个不同用户的实时比赛,但我不知道如何查看他们是否是我的朋友:(。

这是我尝试过的,但它没有返回预期的结果。

SELECT DISTINCT
    f.id
FROM
    fanusers f
WHERE
    f.fb_user_uid IN(
        SELECT
            f1.fb_friends
        FROM
            fanusers f1
        JOIN checkins c1 ON f1.id = c1.fanuser_id
        WHERE
            c1.ctype = 'live'
        AND 
            c1.match_id IN(
                SELECT
                    c2.match_id
                FROM
                    checkins c2
                GROUP BY
                    c2.match_id
                HAVING
                    COUNT(*)> 3
            )
    )

要准确了解fanusers的表格结构,请看这张图片:

enter image description here

除了我的解决方案之外,它很丑陋,它也非常慢:(

任何Ideea?感谢。

0 个答案:

没有答案