0

我有一张桌子,里面装满了我试图分配给 PDU 上的电源插座的设备。

我有一个名为 PDUs 的表,带有 1-16 个插槽。每个插槽都是一个字段,用于在设备表中查找设备 ID。我想让我的查找只显示尚未分配 PDU 插槽的设备。

到目前为止,我可以创建一个查询来查找仅在一个插槽中不存在的设备 ID,但我希望查询扩展到所有插槽。所以我想要一个显示所有未分配设备的查询,并让它查看 PDU 表条目中的所有插槽。

我试图做这样的事情:

SELECT [Devices].Device
FROM [Devices] LEFT JOIN [PDUs] ON [Devices].[ID] = [PDUs].[Slot 1].[Value] OR [Devices].[ID] = [PDUs].[Slot 2].[Value] OR [Devices].[ID] = [PDUs].[Slot 3].[Value]
WHERE ((([PDUs].[Slot 1].Value) Is Null) OR (([PDUs].[Slot 2].Value) Is Null) OR (([PDUs].[Slot 3].Value) Is Null));

但没有成功。

有什么建议么?

4

1 回答 1

1

我将使用 UNION 来查找 PDU 插槽中正在使用的所有设备 ID,然后返回不包括已使用设备的设备列表。

这里有一些伪代码可以帮助您入门。

SELECT *
FROM [Devices]
where [Devices].[ID] NOT IN
(
SELECT Slot1 FROM PDUs WHERE Slot1 IS NOT NULL
UNION ALL
SELECT Slot2 FROM PDUs WHERE Slot2 IS NOT NULL
UNION ALL
SELECT Slot3 FROM PDUs WHERE Slot3 IS NOT NULL
UNION ALL
SELECT Slot4 FROM PDUs WHERE Slot4 IS NOT NULL
UNION ALL
SELECT Slot5 FROM PDUs WHERE Slot5 IS NOT NULL
UNION ALL
SELECT Slot6 FROM PDUs WHERE Slot6 IS NOT NULL
)
于 2013-07-29T21:08:39.070 回答