SQL检查端口可用

时间:2013-01-21 14:21:48

标签: sql

我有两张桌子。

第一张表:端口

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查询来组合这两个。我也不想使用存储过程。

2 个答案:

答案 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。