Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何查找导致循环的所有记录_Sql_Sql Server - Fatal编程技术网

Sql 如何查找导致循环的所有记录

Sql 如何查找导致循环的所有记录,sql,sql-server,Sql,Sql Server,我正在编写一个查询,为while循环中的每个项分配级别代码。我有数据问题的表格需要清理。表中的一些记录如下所示: Product Ingredient XX YY YY XX YY ZZ ZZ XX 我应该如何使用查询来查找可能导致循环的所有对。谢谢 正如@JuanCarlosOropeza所提到的。也可能发生XX->YY

我正在编写一个查询,为while循环中的每个项分配级别代码。我有数据问题的表格需要清理。表中的一些记录如下所示:

 Product          Ingredient
   XX                 YY
   YY                 XX

   YY                 ZZ
   ZZ                 XX
我应该如何使用查询来查找可能导致循环的所有对。谢谢

正如@JuanCarlosOropeza所提到的。也可能发生XX->YY->ZZ->XX

听起来您需要一个递归公共表表达式或CTE。这应该让您开始:


如果您需要的话,我稍后会尝试发布一个代码示例。

它实际上非常简单

 select * from product p1
 inner join product p2 on p1.prod = p2.ingredient 
 inner join p3 on p3.prod = p2.prod and p1.ingredient = p3. Ingredient

这与递归产品(在电话上键入)匹配。

递归成分只有一级深度吗?或者
XX->YY->ZZ->XX
会发生吗?@JuanCarlosOropeza实际上XX->YY->ZZ->XX也可能发生,谢谢。你能更新你的示例以包括该案例和类似
AA->BB->AA
的案例吗?还包括你的愿望输出是什么?你可能不能同时拥有
YY->XX
YY->ZZ
?请阅读并尝试更努力地解释你的问题。