我有一个WorksOrder表,其中特定成员链接到同一个表中的其他WorksOrders。
为此,我创建了一个链接表,它将WorksOrders链接到另一个WorksOrder,并具有WorksOrderAID和WorksOrderBID列。
到目前为止,一切都运行良好,但是当我需要查询某个工作订单时,只返回具有直接链接的工作订单。
这是一个问题,因为它们都应该在同一级别,并且不遵循父/子关系。
如果有WorksOrders 0,1,2,3和4,并且所有都直接链接到0。
当我查询
时SELECT WorksOrderBID from LinkedWorksOrders where WorksOrderAID = @WorksOrderID
UNION ALL
SELECT WorksOrderAID from LinkedWorksOrders where WorksOrderBID = @WorksOrderID
@WorksOrderID是WorksOrder 0,我收到了所有好的WorksOrders。
但是,如果@WorksOrderID为1,那么我只检索0,而不是全部检索0。 如果1,2,3和4链接到未直接链接到0的其他工单,这也会出现问题。
我正忙着处理存储过程以返回所有相关的工作订单,我强烈怀疑设计在某些时候出错,但我找不到它。
答案 0 :(得分:0)
尝试在其他WorksOrderID之间插入缺失的链接:
insert into LinkedWorksOrders (WorksOrderAID, WorksOrderBID)
values (1,1);
insert into LinkedWorksOrders (WorksOrderAID, WorksOrderBID)
values (1,2);
insert into LinkedWorksOrders (WorksOrderAID, WorksOrderBID)
values (1,3);
insert into LinkedWorksOrders (WorksOrderAID, WorksOrderBID)
values (1,4);
insert into LinkedWorksOrders (WorksOrderAID, WorksOrderBID)
values (2,2);
insert into LinkedWorksOrders (WorksOrderAID, WorksOrderBID)
values (2,3);
insert into LinkedWorksOrders (WorksOrderAID, WorksOrderBID)
values (2,4);
insert into LinkedWorksOrders (WorksOrderAID, WorksOrderBID)
values (3,3);
insert into LinkedWorksOrders (WorksOrderAID, WorksOrderBID)
values (3,4);
insert into LinkedWorksOrders (WorksOrderAID, WorksOrderBID)
values (4,4);
修改强>
或者,您可以自行加入您的链接工具,以便更深入地链接您的ID,但这并非详尽无遗:
SELECT w1.WorksOrderAID
from LinkedWorksOrders w1
inner join
LinkedWorksOrders w2
on w1.WorksOrderBID = w2.WorksOrderBID
where w2.WorksOrderAID = @WorksOrderID
UNION
SELECT w1.WorksOrderBID
from LinkedWorksOrders w1
inner join
LinkedWorksOrders w2
on w1.WorksOrderAID = w2.WorksOrderAID
where w2.WorksOrderBID = @WorksOrderID
如果你有工作订单1链接到工程订单2和工程订单2链接到3,那么查询1将不会产生3.但是如果你有1链接到2和3,它将在你查询时给2 3.希望它帮助