我有以下表格:joined_schedules,schedule,users
joined_schedules has: schedule_id, user_id, permission
schedules has: schedule_id, schedule_name
users has: user_id, name
权限可以是0,1,2(0是所有者,1是管理员,2是普通用户)
我正在尝试选择权限为2的所有用户计划。我对此没有任何问题,但我还需要同一查询中的计划所有者(权限= 0)。我在这部分遇到了麻烦。
这个sql的问题在于它只选择schedule_id和schedule_name。我还需要用户的名称,其权限= 0,用于相同的时间表。
SELECT joined_schedules.schedule_id, schedules.schedule_name
FROM joined_schedules
INNER JOIN schedules
ON joined_schedules.schedule_id = schedules.schedule_id
WHERE joined_schedules.user_id = '$id'
AND joined_schedules.permission = 2
编辑:我也试过
SELECT joined_schedules.schedule_id, schedules.schedule_name, users.name
FROM joined_schedules
INNER JOIN schedules
ON joined_schedules.schedule_id = schedules.schedule_id
INNER JOIN users
ON users.user_id = joined_schedules.schedule_id
AND joined_schedules.permission = 0
WHERE joined_schedules.user_id = '$id'
AND joined_schedules.permission = 2
答案 0 :(得分:2)
您可以通过加入joined_schedules
表,其中permission = 0:
SELECT joined_schedules.schedule_id, schedules.schedule_name, u.name
FROM joined_schedules
INNER JOIN schedules
ON joined_schedules.schedule_id = schedules.schedule_id
AND joined_schedules.permission = 2
LEFT JOIN joined_schedules jsOwner
ON jsOwner.schedule_id = schedules.schedule_id
AND jsOwner.permission = 0
LEFT JOIN users u
ON u.user_id = jsOwner.user_id
WHERE joined_schedules.user_id = '$id'