2010-02-13 70 views
2

我与SQL技能是简单的,所以我不知道如何做到这一点。这里不言而喻。SQL - 选择内选择

让我们考虑一下。

Table A 
ID    Name    LastNameID 
1    Jonh    23 
2    Helen    19 

Table B 
ID    LastName 
23    Bauer 
19    Summers 

SELECT ID Name LastNameID FROM TableA 

我如何添加一个将从表B根据表A.

的LastNameID在这种情况下返回的名字我通常使用一个简单的功能的编程语言内的另一个选择我用它来为每个返回的行做这件事。

但我认为是时候单独使用SQL了。

任何帮助表示赞赏。

回答

5

你只需要加入使用LastNameId字段的表:

SELECT TableA.[Name] AS FirstName, TableB.LastName 
FROM TableA 
    INNER JOIN TableB ON TableA.LastNameId = TableB.LastNameId 
+0

我想你的答案......但现在我得申请他们做4个表之间的这种关系。它可能需要一段时间。谢谢。 – 2010-02-13 05:29:04

0

你问“怎么有选择做这里面选择”。通常,这些查询是以连接的形式写入的,而不是作为子选择。进行连接比对少量表格进行子选择要好。

您的应用程序的查询是

SELECT firstNames.Name, lastNames.LastName FROM TableA firstNames, TableB lastNames 
WHERE firstNames.LastNameId = lastNames.LastNameId; 

这是一样的,如他的回答显示由克里斯在显式连接形式编写查询。

+0

感谢您的帮助。它可能会这样做 – 2010-02-13 05:30:03

+0

写得很好的数据库引擎通常会以相同的方式计划查询。但使用连接更具惯用性。 – 2010-02-13 05:30:56

+0

jrharshath你能解释你的代码是如何进行的吗?所以我可以在我的应用程序中大规模应用它。这将在Sql Server CE上工作吗? – 2010-02-13 08:20:35

0

有一些很好的答案在这里,但如果你确实有一个表中的姓氏和名字由ID相连接的另一个表 - 我认为现在是时候复习基础知识。开始看Northwind数据库andmthen一些数据库入门套件here.

+1

我用的名字和姓氏为比较简单的可能..这只是一些它来到我的头。我绝对不会那样做。但解决办法是其他情况非常好。 – 2010-02-13 05:25:26