0

假设您有 3 个表:users、songs 和 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,但如果它们由其他用户ID拥有,则只选择ready=1的歌曲。

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

4

3 回答 3

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
于 2013-10-09T14:22:23.613 回答
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]

尝试让我们知道这是否是您的意思。

于 2013-10-09T14:21:42.653 回答
0

您可以在一个查询中完成所有操作。

在此处查看示例

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;
于 2013-10-09T14:33:47.260 回答