0

我有T1表格Idname列。

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

元素的复杂性和数量可以变化。

我怎样才能用递归做到这一点?

还有一个任务:

我需要输出包含 Wheel 的所有最简单的元素。

4

1 回答 1

2

SQL 中的递归解决方案可能非常复杂。在您的情况下,我认为没有必要使用它,因为它只会使您的代码更复杂。

如果您仍然坚持, 您可以使用CTE : SQL Server 中的递归查询

非递归解决方案:,您只需要出现在中但不出
现在 中的元素:T2Element_IDAggregate_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)
于 2013-10-12T08:06:14.243 回答