0

ライブ チェックイン(checkins.ctype='live') を行ったユーザー ID の個別のリストを取得する必要があり、3 人以上の友人もライブ チェックインしています

DB設計は次のとおりです。

ここに画像の説明を入力

ライブ チェックインで 3 人以上のユーザーがいる一致のリストを正常に取得しましたが、それらが私の友達かどうかを確認する必要があります。

今までの私のコード:

個別選択
    f1.id
から
    ファンユーザーf1

JOIN チェックイン c
オン c.fanuser_id = f1.id

どこ
c.ctype = 'ライブ'
と
c.match_id IN (
                                選択する
                                    c1.match_id
                                から
                                    チェックイン c1
                                どこ
                                    c1.ctype = 'ライブ'
                                グループ化
                                    c1.match_id
                                持っている
                                    COUNT(*)> 3
                            )

...そして、同じ試合にチェックインしたフレンドが 3 人または 3 人以上いる (c.match_id)

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

4

1 に答える 1

1

fanuser_id で fanuser_friends へのチェックインに参加してから、さらに friend_id でのチェックインに参加し、fanuser_id と match_id でグループ化して関連する友達の数を見つけ、その結果を友達の数に制限するのはどうでしょうか?

いえ

SELECT DISTINCT c.fanuser_id
FROM checkins c 
INNER JOIN fanuser_friends f on 
f.fanuser_id = c.fanuser_id 
INNER JOIN checkins c2
on c2.fanuser_id = f.friend_id
AND c2.match_id = c.match_id
WHERE c.ctype = 'live'
AND c2.ctype = 'live'
GROUP BY c.fanuser_id, c.match_id
HAVING COUNT(*) >= 3;
于 2012-12-13T14:43:32.090 に答える