从同一个表中选择多个值

时间:2014-05-15 14:55:25

标签: mysql sql

我有以下表格: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

1 个答案:

答案 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'