加入表格 - 需要帮助

时间:2014-12-04 15:46:42

标签: sql

检索所有员工的员工编号,姓氏和姓氏 在他们的姓氏中有任何字母'm'。同时显示部门 名称和位置。 提示:字母'm'可以是大写或小写。

我正在尝试获取我需要的5行,但我一直收到20行,我使用了以下代码,但我不知道还需要做什么。我不断得到无关的信息,无法找到两个表之间的链接。

select emp_no, emp_surname, emp_forename, depart_name, depart_location 
from employee, department
where emp_surname like 'M%' or emp_surname like '%m%';

3 个答案:

答案 0 :(得分:2)

您正在创建两个表的笛卡尔积,因为没有设置逻辑上属于哪些行的条件。因此,创建了员工和部门的每种可能组合,然后就此进行了选择。

要限制这一点,您需要指定员工中的哪个列映射到部门中的哪个列。

这样的事情:

select emp_no, emp_surname, emp_forename, depart_name, depart_location 
from employee
inner join department on employee.department_id = department.id
where emp_surname like '%M%' or emp_surname like '%m%';

答案 1 :(得分:1)

您需要员工和部门之间的联系,例如:

select e.emp_no, e.emp_surname, e.emp_forename, d.depart_name, d.depart_location 
from employee e, department d
where e.emp_surname like 'M%' or e.emp_surname like '%m%' and .id = d.emplyee_id

答案 2 :(得分:0)

你必须使用内连接,然后匹配列值使用低,然后使用像m一样。 那是在SQL服务器上工作。

select emp_no, emp_surname, emp_forename, depart_name, depart_location 
from employee INNER JOIN department on employee.department_id = department.id
where lower(emp_surname) like 'm%';