2013-10-12 1 views
0

У меня есть T1 стол с Id и name столбцы.Выберите простейший элемент Рекурсия SQL Server изменила сложность таблицы

Таблица T2 с Aggregate_ID и Element_ID.

Они скрещивают

x1:

ID и Name 

1 Car 
2 Hood 
3 Engine 
4 Cylinder 
5 Wheel 
6 tyre 
7 rim (car) 
8 Rim fixation (Car) 

x2:

Aggregate_ID Element_ID 

1 2 
1 3 
1 4 
1 5 
3 4 
5 6 
5 7 
7 8 

нужно выбрать простейший элемент, как 2, 4, 8

Сложность и количество элементов могут варьироваться.

Как я могу это сделать с рекурсией?

Существует еще одна задача:

мне нужно вывести все простейшие элементы из которых состоит колеса.

+0

Почему использование рекурсии? –

+1

Можете ли вы привести пример, это не очень понятно. – christiandev

ответ

2

Рекурсивное решение в SQL может быть очень сложным. В вашем случае я не вижу необходимости использовать его, так как это сделает ваш код более сложным.

Вы можете использовать КТР, если вы по-прежнему настаивают на том: Recursive query in SQL Server

рекурсивное решение нераспространении:,
Вы хотите только те элементы, которые появляются в T2 в Element_ID, но не в Aggregate_ID:

SELECT Element_ID 
FROM T2 
EXCEPT 
SELECT Aggregate_ID 
FROM T2 

Или если вы хотите отобразить всю информацию по элементам:

SELECT * 
FROM T1 
WHERE T1.ID NOT IN (SELECT Aggregate_ID 
        FROM T2) 
+0

Большое спасибо. Мой первый шаг был CTE, но я не знаю, как это сделать. – ifooi

+0

Я понял механизм, но мне нужно больше практики – ifooi

+0

Вы можете удалить все 'DISTINCT', они являются избыточными. –

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