1

データベーステーブルからビデオを取得しようとしています。条件: ユーザーのプライバシー設定で視聴が制限されていない場合にのみ、動画を含める必要があります。

ビデオ テーブル: ビデオテーブル

プライバシーは 0、1、2、または 3 です。

関係表: 関係

すべてのビデオのページを取得したいとしましょう。私が友達ではない人のビデオは含めないでくださいという制限があります。(後で、このクエリを拡張して「連絡先」も含める必要があります)。

つまり、このプライバシー設定を持つすべての動画を照会する必要があります。

プライバシー = 0

プライバシー != 1 (プロフィール動画は非表示)

プライバシー = 3 AND私はこのメンバーの友達リストにいます

私のユーザーIDは1です。

このクエリを試しましたが、望ましい結果が得られません。

SELECT videos.*,
FROM `video_table` AS `videos`
WHERE 
(
    videos.privacy != 1
    OR (
        videos.privacy = 3
        AND '1' IN (
            SELECT friendslist.relationid
            FROM friendslist
            WHERE friendslist.userid = videos.userid
            AND friendslist.friend = 'yes'
        )
    )
)
LIMIT 20

IF ステートメントは、クエリの選択部分でのみ使用できると思いますか?

疑似コードのクエリ: SELECT all videos WHERE privacy != 1 AND IF (privacy = 3) { myuserid must be on users_friendslist} )

すべてのビデオを表示し、友達ではない人のビデオを除外するにはどうすればよいですか?

4

1 に答える 1

0
SELECT *
FROM video_table AS v
WHERE privacy = 0
    OR (privacy = 3
        AND @myId IN (
            SELECT f.relationid
            FROM friendslist AS f
            WHERE f.userid = v.userid
            AND f.friend = 'yes'
        )
    )
LIMIT 20
于 2012-06-04T11:59:59.033 に答える