Sql 我想按照下面提到的表获取数据库信息

Sql 我想按照下面提到的表获取数据库信息,sql,database,db2,Sql,Database,Db2,一张桌子将有主要部分和次要部分,同样,主要部分将是另一个主要部分的次要部分,它可能一直持续到最后 Main Part ------Sub Part ------------------------ A123 --------------B123 B123 --------------C123 C123 --------------D123 A123 --------------B123 X123 --------------Y123 Y123 --------------Z123 当我

一张桌子将有主要部分和次要部分,同样,主要部分将是另一个主要部分的次要部分,它可能一直持续到最后

Main Part ------Sub Part
------------------------    
A123 --------------B123
B123 --------------C123
C123 --------------D123
A123 --------------B123
X123 --------------Y123
Y123 --------------Z123
当我把D123放在where条件下时,我需要A123作为输出

查询->

*输出->*A123

同样,当我把Z123放在where条件下时,我需要得到X123 where

查询->

*输出->*Z123


预期查询为答案->我需要一个查询,这样它将获取链中的最后一个主要部分

要在长度未知的链中获取最后一个结果并不容易。 如前所述,如果深度为6,则可以尝试以下SQL语句:

SELECT COALESCE(t6.Main_Part,COALESCE(t5.Main_Part,COALESCE(t4.Main_Part,COALESCE(t3.Main_Part,COALESCE(t2.Main_Part,COALESCE(t1.Main_Part,'NO RESULT')))))) as RESULT
FROM table t1
    LEFT JOIN table t2 ON t1.Main_Part=t2.Sub_Part
    LEFT JOIN table t3 ON t2.Main_Part=t3.Sub_Part
    LEFT JOIN table t4 ON t3.Main_Part=t4.Sub_Part
    LEFT JOIN table t5 ON t4.Main_Part=t5.Sub_Part
    LEFT JOIN table t6 ON t5.Main_Part=t6.Sub_Part
WHERE t1.Sub_Part='D123'

否则,添加连接直到满足所需的最大深度

继承人可以嵌套多少次?Mike可以嵌套6次、4次或1次。这取决于数据库中的插入。它不是常数。我需要一个查询,这样它将获取如上所述的正确答案。我认为您必须首先构建一个代码列表,这些代码是主要部分从表中选择不同的主要部分(若不存在),从表中选择不同的子部分,然后您必须构建嵌套的子查询,四次或六次获取MainPart此方法/发布可能也会有所帮助-DB中有大量记录,我认为您给出的解决方案不起作用。若我必须手动执行相应的嵌套条件,那个么查询就并没有用处了。我本来会做的,但那要花很多时间。若我给一个子部分输入,我需要输出,这将给最后一个主要部分。如果SQL Db2中有任何函数可以获取此类输出,请给我一个函数。非常感谢。它像预期的那样工作,就像魅力一样。。非常感谢你。深度6已经足够了
Select * from table where Sub Part = 'X123'
SELECT COALESCE(t6.Main_Part,COALESCE(t5.Main_Part,COALESCE(t4.Main_Part,COALESCE(t3.Main_Part,COALESCE(t2.Main_Part,COALESCE(t1.Main_Part,'NO RESULT')))))) as RESULT
FROM table t1
    LEFT JOIN table t2 ON t1.Main_Part=t2.Sub_Part
    LEFT JOIN table t3 ON t2.Main_Part=t3.Sub_Part
    LEFT JOIN table t4 ON t3.Main_Part=t4.Sub_Part
    LEFT JOIN table t5 ON t4.Main_Part=t5.Sub_Part
    LEFT JOIN table t6 ON t5.Main_Part=t6.Sub_Part
WHERE t1.Sub_Part='D123'