2012-08-28 150 views
1

我有兩個表..SQL查詢涉及多個表

人:

empid(primary key) 
    firstname 
    lastname 
    email 

詳情:

Did(primary key) 
    salary 
    designation 
    empid 

現在我需要SELECT姓和名的僱員名稱爲Manager

我是一個初學者,我一直在W3school學習SQL(這很棒btw),如果你可以建議我在完成w3school之後應該去哪裏,那將會很棒!

+1

[不是每個人都對w3school表示贊同!](http://w3fools.com/) –

回答

1

這幾乎就像你說的,用一個簡單的對涉及列加入兩個表一起(在這種情況下EmpID):

SELECT firstname, 
     lastname 
FROM Persons 
     INNER JOIN Details 
     ON Persons.EmpID = Details.EmpID 
WHERE designation = 'Manager' 

至於知識的最佳來源,你不能擊敗的書,MSDN和計算器如果你問我。也有很多博客 - 但他們傾向於更高級的話題。無論如何,作家往往都是這樣的!

0

你要找的查詢:

select t1.firstname, t1.lastname 
from person t1 inner join 
details t2 on t1.empid = t2.empid 
where t2.designation = 'Manager' 

至於在互聯網上學習SQL中,我真的不知道教程的好地方,但因爲你是使用SQL Server 2008,我經常建議你請諮詢MSDN。如果你有動力,你可以在那裏找到非常深刻的信息。

0

具體我不知道這是否適用於SQL Server 2008的,但這應該是相當標準的SQL:

SELECT firstname, lastname 
FROM Persons 
INNER JOIN Details ON Persons.empid = Details.empid 
WHERE Details.designation = 'Manager' 
+0

'Did'不是表格的名稱 - 這是'Details'表格的主鍵列;-) – Bridge

+0

謝謝,編輯我的答案! :) – j0nes

0
Select p.fname, p.lname 
from persons p, details d 
where d.designation="Manager" and p.empid=d.empid 

使用單個字符的事情,p.d.,是隻是做速記和打字保存的方式。

至於SQL來源,我是tizag的忠實粉絲。通常,我的主要代碼是PHP,SQL等等。 W3第一,Stack Overflow第二,tizag第三。我總是通過這種方式找到答案。

+1

[壞習慣踢:使用舊式JOIN](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style- joins.aspx) - 你不應該只使用逗號分隔的表列表......而是使用適當的ANSI JOIN語法**('INNER JOIN','LEFT OUTER JOIN')。 –