2014-01-23 3 views
0

Я искал, но не нашел ничего, что могло бы помочь.Запрос таблицы таблиц одинаковых таблиц в SQL Server

У меня есть следующие таблицы в SQL Server 2005 базы данных:

Parent  Child    Value 
----  --------   --------- 
America Mexico   8 
America Canada   1 
Asia  Japan    5 
Asia  Korea    7 
Europe  Spain    0 
Europe  Italy    2 
Africa  Zimbabwe   1 
Mexico  Baja California 0 
America USA    3 
USA  California  1 
USA  Texas    2 

Родитель и ребенок Первичный ключ, значение не имеет значения (ИМО). Я хотел бы создать представление, что приводит к чему-то вроде этого:

Parent  Child    Value 
----  --------   --------- 
America USA    3 
USA  California  1 
USA  Texas    2 

Я бы искал Америку, и результат будет возвращать каждый вложенный ребенка не существует, рекурсивно, независимо от того, сколько он имеет, так как я могут включать города, населенные пункты и т. д.

Что мне нужно, это похоже на то, что некоторые называют взрывом спецификации.

+0

Это те три строки, которые вы хотите, или есть куча других строк, которые вы оставили? –

+0

Я оставил кучу строк, эти три строки - это результат, если я, например, хочу всех детей Америки и США – user3225819

ответ

0

Вот как вы можете это сделать:

with cte as (
     select parent, child 
     from t 
     union all 
     select cte.parent, t.child 
     from cte join 
      t 
      on cte.child = t.parent 
    ) 
select cte.* 
from cte 
where parent = 'America'; 

Here небольшой пример SQL Скрипки.

Смежные вопросы