我有两张桌子。
第一张表:端口
Column: PORTID - integer
Column: FRONTINTERFACE - varchar (eg, "RJ45", "BNC", "SC", "FC", "-")
Column: REARINTERFACE - varchar (eg, "RJ45", "BNC", "SC", "FC", "-")
第二张表:PortUsed
Column: PORTID - integer
Column: Facing - varchar(1) (eg, "F" or "R")
ports表包含所有端口信息,包括前后接口类型。如果不可用,则相应的界面设置为“ - ”
如果使用端口,则表PortUsed将存储PortID和Facing。
任何人都可以帮助查询SQL查询端口是否可用。
要求1:检查PortID和Facing是否在PortUsed Table中,以确定该端口未被使用。
要求2:检查相应的前接口或后接口是否为“ - ”
我能够在2个单独的sql查询中获得结果,但它太慢了。所以寻找一个SQL查询来组合这两个。我也不想使用存储过程。
答案 0 :(得分:0)
select *
from Ports a left join PortUsed b on a.portid = b.portid
where b.portid is null
and a.FRONTINTERFACE <> '-'
and a.REARINTERFACE <> '-'
我建议将前接口和后接口中的' - '更改为空值
答案 1 :(得分:0)
花了我几天的时间来弄清楚如何获得正确的结果。
SELECT PortID FROM Ports
WHERE (PortID = @PortID)
AND (FrontInterface <> '-')
AND (NOT EXISTS(SELECT PortID, Facing
FROM PortUsed
WHERE (PortID = @PortID) AND (Facing = @Facing)
)
)
如果检查后方面,请用RearInterface替换FrontInterface。