对于Sql Server 19图节点,我需要添加外部自联接

问题描述

我正在尝试在sql服务器19中设计一个Graph结构,在该结构中我需要在节点中模拟自身外部联接...节点具有设备和设备类型。级别列通过指定设备类型来建立设备层次结构。在某些材料明细表中,Eq_A可能直接附加到Eq_L,而不会在中间插入Eq_X。当我想将物料连接到设备并列出所有物料时,我将不得不使用OUTER JOIN功能来确保列出所有物料及其设备层次结构。

材料Eqiup1装备2装备3

A Eq_A Eq_X Eq_L

B Eq_A NULL Eq_L

C Eq_A Eq_X Eq_L

提取此信息,我需要在设备节点内进行外部自连接。这里的问题是sql Server GRAPH不支持OPTIONAL MATCH,并且子查询方法不适用于自联接。任何人都可以建议解决方法解决此问题 我试图创建以下查询以实现此目的。这可能没有太大帮助,因为在此过程中它变得太复杂了,因此我举了上面的例子

SELECT disTINCT tnodeEqui.Id ,REPLACE(tnodeEqui.Id,'Press_','')PressNumber ,tnodeEqui2.Id模具编号 ,tod.Id Skin_Part_Number ,tod.Autoid Skin_Part_Autoid ,案件 当tnodemb.Id ='Dummy_Part' 然后“无” ELSE REPLACE(tnodemb.Id,'SMC-','') END SMC_Type ,1是原版 ,0是新的 从tblNodeMatlBill tnodemb ,tblEdgeOpsDefToMatBill tedgeprodtobill ,tblEdgeOpsDefToMatBill tedgeprodtobill1 ,tblEdgeOpsDefToMatBill tedgeprodtobill2 ,tblEdgeOpsDefToMatBill tedgeprodtobillcb ,tblnodeOpsSegEquipSpec tnodeEqui ,tblEdgeProductToOpsSegEquip产品 ,tblnodeOpsDef tod ,tblEdgeOpsSegEquipToEquip tedgeopstoequip ,tblnodeEquip te ,tblEdgeEquipToEquipCls tedgeEquiptoCls ,tblnodeEquipCls tec 左外连接( SELECT tNodeOSESCB。$ NODE_ID AS OSNodeId 来自tblNodeOpsSegEquipSpec tNodeOSESCB ,tblEdgeOpsSegEquipToEquip tedgeopstoequip ,tblNodeequip tNodeEC ,tblnodeOpsDef tod ,tblEdgeProductToOpsSegEquip prodtoopsCB ,tblEdgeEquipToEquipCls tedgeEquiptoClsCB ,tblnodeEquipCls tecCB ,tblEdgepresstoCasettebase tepresstoCB 在哪里匹配(tod-(prodtoopsCB)-> tNodeOSESCB-(tedgeopstoequip)-> tNodeEC-(tedgeEquiptoClsCB)-> tecCB) AND MATCH(tnodeEqui-(tepresstoCB)-> tNodeOSESCB) AND tNodeOSESCB.Activestatus = 1 AND tecCB.Id ='CassetteBase' AND tecCB.ActiveStatus = 1 AND tNodeEC.activestatus = 1 )AS JoinopsCls放在torsesCB上。 , tblnodeOpsSegEquipSpec tnodeEqui1 ,tblEdgeProductToOpsSegEquip prodtoops1 ,tblEdgeOpsSegEquipToEquip tedgeopstoequip1 ,tblnodeEquip te1 ,tblEdgeEquipToEquipCls tedgeEquiptoCls1 ,tblnodeEquipCls tec1 ,tblnodeOpsSegEquipSpec tnodeEqui2 ,tblEdgeProductToOpsSegEquip prodtoops2 ,tblEdgeOpsSegEquipToEquip tedgeopstoequip2 ,tblnodeEquip te2 ,tblEdgeEquipToEquipCls tedgeEquiptoCls2 ,tblnodeEquipCls tec2 ,tblEdgeBasemoldtomold tedgebaseMtomold ,tblEdgepresstoCasettebase tedgepresstocb 1 = 1 AND MATCH(tnodemb tnodeEqui-(tedgeopstoequip)-> te-(tedgeEquiptoCls)-> tec) AND MATCH(tnodemb tnodeEquicb-(tedgeopstoequipcb)-> tecb-(tedgeEquiptoClscb)-> teccb) AND MATCH(tnodemb tnodeEqui1-(tedgeopstoequip1)-> te1-(tedgeEquiptoCls1)-> tec1) 和匹配(tnodemb tnodeEqui2-(tedgeopstoequip2)-> te2-(tedgeEquiptoCls2)-> tec2) AND MATCH(tnodeEqui1-(tedgebaseMtomold)-> tnodeEqui2) AND MATCH(tnodeEqui-(tedgepresstocb)-> tnodeEquicb) AND tec2.Id ='模具' AND tec1.Id ='BaseMold' AND tec.Id ='Press' AND tecb.Id ='CassetteBase' AND tec.LEVEL ='生产单位' AND tnodeEqui.Id = te.ID AND te.ActiveStatus = 1 AND tecb.ActiveStatus = 1 AND tec.LEVEL = tec2.LEVEL AND tnodeEqui.Id ='Press_06' ORDER BY tnodeEqui.Id

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)