选择当前用户拥有的所有项目,如果不是,则显示较少的项目

时间:2013-10-09 14:15:42

标签: mysql select

想象一下,您有3个表:用户,歌曲和users_songs。用户是他们自己的歌曲或歌曲的编辑,他们已被邀请编辑,但他们无法编辑任何人。

users
-id
-username

songs
-id
-is_ready
-name

users_songs
-id
-user_id
-song_id

is_ready为0或1 - 表示歌曲未准备好/准备好显示在首页的列表中。

我想选择当前用户ID拥有的所有歌曲,无论ready = 1还是ready = 0,但只选择 ready = 1 的歌曲,如果他们是'由其他用户ID重新拥有。

我想我可能会要求有冲突的联接,所以我不确定它是否可能......

3 个答案:

答案 0 :(得分:1)

就像($user_id是当前用户ID):

SELECT
  songs.*
FROM
  songs
    LEFT JOIN users_songs ON songs.id=users_songs.song_id
WHERE
  user_songs.user_id=$user_id
  OR
  is_ready=1

答案 1 :(得分:0)

SELECT songs.*
FROM songs, users, users_songs
WHERE users.id = users_songs.user_id 
AND (users_songs.song_id = songs.id OR songs.is_ready = 1)
AND users.id = [current user id]

如果这就是你的意思,请尝试告诉我们。

答案 2 :(得分:0)

您可以在一个查询中执行此操作。

See example here

SELECT us.user_id, s.name, s.is_ready
FROM songs s, users u, users_songs us
WHERE us.song_id = s.id
and 
(u.id = us.user_id 
OR (us.user_id <> u.id AND s.is_ready = true))
AND u.id = 1;