2015-07-10 110 views
3

我是SQL新手,試圖用兩張表Employee和Department來解決這個問題。我想顯示'HR'和'Sales'部門所有員工的姓名。 表是員工(emp_id,emp_name,dept_id)部門(dept_id,dept_name)帶有JOIN和WHERE子句的SQL語句

謝謝!

+0

下一次,你應該表現出自己的一些努力。肯定有你自己的一些想法,因爲某些原因沒有工作。或者你甚至沒有嘗試*任何*? –

+0

就像我寫的,我在這裏詢問之前試過這些問題。我會在下次記住你的指示。不管怎樣,謝謝! – user2439492

回答

3

試試這個:

Select e.emp_name from 
Employee e inner join Department d 
on e.dept_id = d.dept_id 
Where d.dept_name in ('HR','Sales'); 

這個查詢將比較Employee表和Departmentdept_id。那些匹配的值將被返回。那麼在所有字段中,您將選擇emp_name並使用where子句限制屬於HRSales部門的員工。

+0

謝謝兄弟!那個工作我實際上與這個問題中的'where'子句混淆了。謝謝 – user2439492

+0

非常歡迎:)做upvote並接受答案如果有用:) –

+0

對不起,再次打擾你,實際上我試圖用不同的scnerios來探索問題,但用同樣的表格,並遇到一些不同類型的問題。 如何顯示擁有10多個employess的所有部門名稱。 謝謝! – user2439492

1
select Employee.emp_name [Emplyee Name] from Employee inner join Department on Department.dept_id=Emplyee.emp_id where Department.dept_name='HR' 
2

由於您只想顯示員工數據,只能從該表中選擇。其餘的是標準。你希望自己的部門是「人力資源」或「銷售」,所以寫這IN子句(你也可以使用EXISTS子句)的直接的方式:

select emp_name 
from employee 
where dept_id in 
(
    select dept_id 
    from department 
    where dept_name in ('HR', 'Sales') 
); 

我覺得這是更易於閱讀比首先加入表格,只使用一個作爲另一個的過濾器。

0

你可以得到這樣的,

SELECT [emp_name] FROM [dbo].[Employee] AS E 
INNER JOIN [dbo].[Department] AS D 
ON D.dept_id=E.dept_id 
WHERE D.dept_name='HR' OR D.dept_name='Sales'