在oracle SQL Query中为连接条件中的列提供默认值

时间:2013-09-03 07:50:12

标签: sql join conditional-statements

我有3张桌子

用户(用户ID,用户名)

1,Ram
2,Krishna
3,Madhu
4,Deepak

角色(角色ID,角色名)

101,Agent
102,User
103,Manager

user_role_map(用户ID,角色ID)

1,102
2,103
3,101

我需要在查询中获取以下详细信息。如果user_role_map中没有用户的记录,我需要将RoleName作为NONE

UserID,UserName,RoleName

1,Ram,User
2,Krishna,Manager
4,Deepak,NONE

以下查询未返回UserID 4

SELECT  u.UserID
    ,   u.UserName
    ,   r.RoleName
FROM users u, roles r, user_role_map ur
WHERE u.UserID = ur.UserID
    AND r.roleid = ur.roleid

1 个答案:

答案 0 :(得分:0)

试试这个 - 没有经过测试,但看起来对我来说

select 
  u.UserID, u.UserName, IsNull(r.roleName, 'NONE') 
from 
  users u
  left join user_role_map ur on
    ur.UserId = u.UserId
  left join roles r on
    r.roleid=ur.roleid