Mysql 选择当前用户拥有的所有项目,如果不是,则显示较少的项目
假设您有3个表:用户、歌曲和用户歌曲。用户是自己歌曲的编辑,或者他们被邀请编辑的歌曲的编辑,但是他们不能编辑任何其他人Mysql 选择当前用户拥有的所有项目,如果不是,则显示较少的项目,mysql,select,Mysql,Select,假设您有3个表:用户、歌曲和用户歌曲。用户是自己歌曲的编辑,或者他们被邀请编辑的歌曲的编辑,但是他们不能编辑任何其他人 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) 我想我可
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)
我想我可能会要求有冲突的连接,所以我不确定这是否可能
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]
请尝试让我们知道您的意思。就像$user\u 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
您可以在一个查询中完成这一切
您如何知道用户是否已被邀请编辑歌曲。从结构上看不清楚。他们的ID会出现在用户歌曲中。如果是的话,我想阿尔玛·多·芒多的答案是正确的
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;