SQL Management Studio选择特定的孩子
所以我有三个表,table1
,table2
和table3
。它们分别具有ID字段table1ID
,table2ID
和table3ID
。此外,table2
的字段table1ID
指向table1
中的一行,而table3
的字段table2ID
指向table2
中的一行。SQL Management Studio选择特定的孩子
所以,我的问题是,我该怎么做,在table3
在table2
引用一排table1
与ID 4
引用一行只可选择行的select语句?
你正在寻找一个链接的加入与此类似
select * from table3
join table2 on table3.table2ID = table2.table2ID
join table1 on table2.table1ID = table1.table1ID
where table1.ID = 4
这只会返回表3的记录,如果有匹配的表2和表1的纪录。联接将结果筛选出其中加入匹配,并且WHERE过滤器将只从结果中选择其中table1的ID = 4
工作示例我刮起(嘿我有时间杀)
create table #table1 (table1ID int)
create table #table2 (table2ID int, table1ID int)
create table #table3 (table3ID int, table2ID int)
insert into #table1 values(1)
insert into #table1 values(2)
insert into #table1 values(3)
insert into #table1 values(4)
insert into #table2 values(10, 1)
insert into #table2 values(11, 2)
insert into #table2 values(12, 3)
insert into #table2 values(13, 4)
insert into #table3 values(20, 10)
insert into #table3 values(21, 11)
insert into #table3 values(22, 12)
insert into #table3 values(23, 13)
-- all joined records
select * from #table3
join #table2 on #table3.table2ID = #table2.table2ID
join #table1 on #table2.table1ID = #table1.table1ID
-- only where table1 ID = 4
select * from #table3
join #table2 on #table3.table2ID = #table2.table2ID
join #table1 on #table2.table1ID = #table1.table1ID
where #table1.table1ID = 4
drop table #table1
drop table #table2
drop table #table3
这给你
table3ID table2ID table2ID table1ID table1ID
----------- ----------- ----------- ----------- -----------
20 10 10 1 1
21 11 11 2 2
22 12 12 3 3
23 13 13 4 4
table3ID table2ID table2ID table1ID table1ID
----------- ----------- ----------- ----------- -----------
23 13 13 4 4
不确定*是否会从表2和表3返回字段。怎么样选择table3。*? – TechTravelThink 2010-11-02 12:43:29
@StartClass:是的,它确实返回所有表中的字段。而你说的话修复了它。谢谢! – Entity 2010-11-02 12:48:25
没问题! :-) – invert 2010-11-02 12:54:40
你的问题无关,与SQL Management Studio中。虽然,很显然你正在使用SQL Server并通过SQL Management Studio访问服务器。 – TechTravelThink 2010-11-02 12:44:57
固定标签以匹配问题。 – invert 2010-11-02 12:53:13