SQL Management Studio Выбор конкретных потомков - PullRequest
0 голосов
/ 02 ноября 2010

Итак, у меня есть три таблицы: table1, table2 и table3.У каждого из них есть поля идентификатора, table1ID, table2ID и table3ID соответственно.Кроме того, table2 имеет поле table1ID, которое указывает на строку в table1, а table3 имеет поле table2ID, которое указывает на строку в table2.

Итак, мойвопрос в том, как мне сделать оператор выбора, который выбирает только строки в table3, которые ссылаются на строку в table2, которые ссылаются на строку в table1 с идентификатором 4?

1 Ответ

1 голос
/ 02 ноября 2010

Вы просматриваете ссылку на соединения, похожие на эту

select * from table3
join table2 on table3.table2ID = table2.table2ID
join table1 on table2.table1ID = table1.table1ID
where table1.ID = 4

, она будет возвращать только записи table3, если есть соответствующая запись table2 AND table 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...