2012-06-04 43 views
1

我试图从数据库表中获取视频。条件:只有在用户的隐私设置不限制观看时才应包含视频。条件MySQL查询 - 结果隐私

视频表: video table

隐私可以0,1,2或3

的关系表: relationships

比方说,我想获得的所有视频的页面,不应该包含那些我不是朋友的视频的限制。 (稍后,我将不得不扩展此查询以包含“联系人”)。

这意味着,有这样的隐私设置,应查询所有视频:

隐私= 0

隐私= 1(我的视频是隐藏的)

隐私= 3 我在这个成员的朋友列表

我的用户名是1.

我试过这个查询Y,但它并没有给我想要的结果:

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语句只能在查询的选择部分使用?

在伪代码查询: 选择所有的视频中的隐私= 1 AND IF(隐私= 3){myuserid必须在users_friendslist})

我如何可以显示所有影片,但排除人的!谁我不是朋友?

+0

视频和用户表是如何关联的?显示用户表架构。 –

+0

不要忘记接受一个答案,如果它帮助你,作为对他人的基本礼貌...... –

回答

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