抱歉,如果我没有正确理解这个问题,但我对SQL
陈述很新,我似乎无法做到这一点我需要帮助来制定如何做SELECT
涉及查找表的声明,情况如下:
Employee table
[ID], [Name], [StartDate]
User_Roles (lookup) table
[Employee_ID], [Role_ID]
Roles Table
[Id], [RoleName]
因此,我可以看到employee
有一个 ID,名称和StartDate,
User_Roles
表格将角色ID分配给用户ID 和
Roles Table
包含角色代码。
我需要返回的 Select语句:
Employee.ID, Employee.Name, Employee.StartDate, Roles.RoleName
基于映射在User_Roles
表中的内容。
非常感谢您的帮助
答案 0 :(得分: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
完整示例
/*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;
<强> Working Example 强>
答案 1 :(得分:1)
你可以这样做:
SELECT e.ID, e.Name, e.StartDate, r.RoleName
FROM Employee as e
INNER JOIN UserRoles as ur on ur.EmployeeID = e.ID
INNER JOIN Roles as r on ur.Role_ID = r.Id
请注意,如果员工有多个角色,您将获得每位员工多行。