检索所有员工的员工编号,姓氏和姓氏 在他们的姓氏中有任何字母'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%';
答案 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%';