选择查询以根据表ID或名称引用表

时间:2015-11-19 03:01:27

标签: sql sql-server sql-server-2008

考虑我有一个表,列出数据库中的所有表以及引用的表。在我的例子中,表中没有使用外键引用。表引用维护如下

                     TableId   ReferedInTableId
                        1         2
                        1         3
                        1         4
                        2         5
                        2         6
                        3         7
                        4         8
                        4         9
                        5         -
                        6         -
                        7         10
                        8         -
                        9         11
                        10        -
                        11        -

在这种情况下,我需要一个查询来根据输入TableId查找引用的表。

对于Eg,对于TableId 1,referencedTableId是2,3,4。但是我需要再次递归,就像这些2,3,4在某些表格中再次被引用一样,我也需要这个列表。

最后,

如果输入为TableId 1,则应返回2,3,4,5,6,7,8,9,10,11

如果输入是tableId 4,则应返回8,9,11

如果输入是tableId 3,则应返回7,10

请帮我构建一个SQL select查询。

1 个答案:

答案 0 :(得分:1)

假设链接中没有循环,您可以使用相对简单的递归CTE:

<li><a href="javascript:ReplaceContentInContainer('pippo','<span style=\'font-size: 14px; font-color:red;\'>pluto</span>')"> Wedding Receptions</a></li>