我用这么一个查询:
select workers.ID,
workers.Name,
workers.Sex,
Role.RoleName,
workers.Email,
Department.DepartmentName
from workers,role,department 
where 
workers.RoleKey in (select number from role where RoleName='人事助理') and department.number = workers.departmentkey
查询结果如下:
编号     姓名     性别      职位     油箱               部门
001002   刘 女 总经理 [email protected] 人事部
001002   刘 女 人事经理 [email protected] 人事部
001002   刘 女 人事助理 [email protected] 人事部
001002   刘 女 部门经理 [email protected] 人事部
001002   刘 女 普通员工 [email protected] 人事部我的预期结果是要:
编号     姓名     性别      职位     油箱               部门
001002   刘 女 人事助理 [email protected] 人事部
我明明在查询语句中限制了RoleName=人事助理啊。
怎么出现其他职位了呢?
该怎么写。谢谢!

解决方案 »

  1.   

    加一个条件 and workers.RoleKey=role.number试试
      

  2.   

    hyc_music1981()你说的可以。
    我还是不明白workers.RoleKey in (select number from role where RoleName='人事助理')已经有限制了是“人事助理'”。为什么还会出现多余的项呢?
      

  3.   

    SELECT w.ID, w.Name, w.Sex, r.RoleName, 
    w.Email, D.DepartmentName
    FROM workers w, department d, role r
    WHERE w.rolekey=r.number
    AND d.number=w.departmentkey
    AND r.rolename='人事助理'
      

  4.   

    因为在你的查询语句中没有对“from workers,role,department ”中的role表做任何限制,所以取出来的记录数量=正确的记录数量×role中的记录数。做了笛卡尔积。