使用查找表时的SQL SELECT语句

Phi*_*hil 3 sql sql-server

对不起,如果我没有正确地解决这个问题,但我对SQL报表很新,我似乎无法做到这一点我需要帮助解决如何SELECT使用查找表进行声明,情况如下:

Employee table
[ID], [Name], [StartDate]

User_Roles (lookup) table
[Employee_ID], [Role_ID]

Roles Table
[Id], [RoleName]
Run Code Online (Sandbox Code Playgroud)

所以,从我可以看到它employee有一个ID,名称和StartDate,

User_Roles表将角色ID分配给用户ID

Roles Table角色代码.

我需要一个返回的Select语句:

Employee.ID, Employee.Name, Employee.StartDate, Roles.RoleName
Run Code Online (Sandbox Code Playgroud)

根据映射在User_Roles表中的内容.

非常感谢您的帮助

Kev*_*sox 5

您需要使用多个联接来处理关系.

select e.id, e.name, e.startDate, r.RoleName 
from employee e 
join user_roles ur
on e.id = ur.employee_id
join roles r
on r.id = ur.role_id
Run Code Online (Sandbox Code Playgroud)

完整的例子

/*DDL*/

create table EMPLOYEE(
   ID int,
   Name varchar(50),
   StartDate date
);

create table USER_ROLES(
  Employee_ID int,
  Role_ID int
);

create table Roles(
  ID int,
  RoleName varchar(50)
);

insert into EMPLOYEE values(1, 'Jon Skeet', '2013-03-04');
insert into USER_ROLES values (1,1);
insert into ROLES values(1, 'Superman');

/* Query */
select e.id, e.name, e.startDate, r.RoleName 
from employee e 
join user_roles ur
on e.id = ur.employee_id
join roles r
on r.id = ur.role_id;
Run Code Online (Sandbox Code Playgroud)

工作实例

好文章解释连接