2014-12-04 103 views
0

檢索 姓中任何位置帶有字母'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

哪個版本的SQL?你回來的20行是什麼?你可以在這裏發佈嗎? – Mike 2014-12-04 15:49:29

+0

什麼版本的sql? – bowlturner 2014-12-04 15:52:00

+0

它不會讓我發佈它,但我想我有一個笛卡爾產品,例如:約翰史密斯會計紐卡斯爾也約翰史密斯研究約克這是不正確的 – Adam 2014-12-04 15:52:22

回答

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

你需要emplyee和部門之間的連接,例如:

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 
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%';