0

みなさん、こんにちは。

DISTINCT ユーザー ID のリストを取得しようとしています。

  • ライブチェックインを行いました
  • 私と同じ match_id で
  • 私の友達です (彼らの fb_user_uid は私の fb_friends フィールドにあります)
  • そして3以上でした(私が言ったように、同じ試合で)

これがDBの設計です。

ここに画像の説明を入力

値を持つフィールド 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 のテーブル ストラクタを正確に理解するには、次の画像を参照してください。

ここに画像の説明を入力

私のソリューションのほかに、それは醜く、非常に遅いです:(

アイデアはありますか?ありがとう。

4

0 に答える 0