2012-08-28 111 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')。 –