みなさん、こんにちは。
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 のテーブル ストラクタを正確に理解するには、次の画像を参照してください。
私のソリューションのほかに、それは醜く、非常に遅いです:(
アイデアはありますか?ありがとう。