"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > نصائح لإيجاد جميع الرسوم البيانية المتصلة في الرسوم البيانية غير الموجه باستخدام CTE العودية

نصائح لإيجاد جميع الرسوم البيانية المتصلة في الرسوم البيانية غير الموجه باستخدام CTE العودية

نشر في 2025-04-14
تصفح:164

How to Find All Connected Subgraphs in an Undirected Graph Using a Recursive CTE?

آخر.

مثال الجدول:

&] 1

a

c &] G

4 ] 6 d f 9 l &&] a c (b ، d ، f ، j) e 2 1 (A ، C ، G ، H ، L) &&] k &&] أنا 4 (i) مع cte_idents مثل (( حدد التعريف 1 كمعرف من ت الاتحاد حدد التعريف 2 كمعرف من ت ) ، cte_pairs مثل (( حدد التعريف 1 ، التعريف 2 من ت حيث Ident1 & lt ؛ & gt ؛ التعريف 2 الاتحاد حدد Ident2 كـ IDESS1 ، IDESS1 كمعرف 2 من ت حيث Ident1 & lt ؛ & gt ؛ التعريف 2 ) ، cte_recursive مثل (( يختار Cast (CTE_EDENTS.INDES as varchar (8000)) بصفته مرساة ، التعريف 1 ، هوية 2 ، الممثل ('،' Ident1 '،' Ident2 '،' as varchar (8000)) كـ IdentPath ، 1 كـ LVL من cte_pairs Inner Join Cte_Edents على cte_idents.ident = cte_pairs.ident1 الاتحاد جميع يختار cte_recursive.anchorident ، cte_pairs.ident1 ، cte_pairs.ident2 ، الممثل (cte_recursive.identpath cte_pairs.ident2 '،' as varchar (8000)) كـ IdentPath ، cte_recursive.lvl 1 as lvl من cte_pairs Inner Join Cte_Recursive على cte_recursive.ident2 = cte_pairs.ident1 أين cte_recursive.identpath ليس مثل الممثلين ('٪ ،' cte_pairs.ident2 '، ٪' as varchar (8000)) ) ، cte_recursionResult مثل (( حدد مرساة ، Ident1 ، Ident2 من cte_recursive ) ، cte_cleanresult مثل (( حدد مرساة ، IDENT1 كمعرف من cte_recursionResult الاتحاد حدد مرساة ، هوية 2 كمعرف من cte_recursionResult ) يختار cte_idents.ident ، حالة عندما يكون ca_data.xml_value فارغًا ثم cte_idents.ident آخر ca_data.xml_value نهاية كمجموعة ، dense_rank () أكثر (ترتيب بواسطة الحالة عندما يكون ca_data.xml_value فارغًا ثم CTE_EDENTS.INDINT آخر ca_data.xml_value نهاية ) كما المجموعة من cte_idents تنطبق (( حدد cte_cleanresult.ident '،' من cte_cleanresult حيث cte_cleanresult.anchorident = cte_idents.ident order by cte_cleanresult.ident for xml path ('') ، اكتب ) كـ CA_XML (XML_VALUE) تنطبق (( حدد ca_xml.xml_value.value ('.' ، 'nvarchar (max)') ) كـ CA_DATA (XML_VALUE) أين CTE_EDENTS.INDINT ليس فارغًا order by INTER ؛ عينة الإخراج: ] 1 &&&] c e &&]
الإخراج:
، D ، F ، J)
&&]
(b ، d ، f ، j) g
(a ، c ، g ، h ، l) 1
3
يستخدم الاستعلام التالي استعلامًا متكررًا واحدًا للعثور على جميع الخراطيم الفرعية المتصلة:
] a
&]
g

&&]

i &&] k
و] يستخدم الاستعلام CTE متكرر للعثور على جميع المسارات في الرسم البياني الذي يتبع الحواف المحددة في جدول CTE_PAIRS. تنطبق مسار XML و Cross على تسلسل المعرفات المتصلة لكل مجموعة.
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3