2013-01-21 52 views
0

我有两个表。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") 

端口表包含所有端口信息包括前部和后部接口类型。如果不可用,则将相应接口设置为“ - ”

如果使用端口,PortUsed表将存储PortID和Facing。

任何人都可以帮助一个SQL查询来检查端口是否可用。

要求1:检查PortID和Facing是否在PortUsed Table内,以确定该端口未被使用。

要求2:检查相应的前端或后端接口是不是“ - ”

我能够获得2个独立的SQL查询的结果,但实在是太慢了。所以寻找一个SQL查询来结合这两者。我也不想使用存储过程。

回答

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 <> '-' 

我建议改变“ - ”在frontinterface和rearinterface成空

+0

无法正常工作。 – user1997296

+0

“不正常工作”是什么意思? – WKordos

0

我花了天弄清楚如何得到正确的结果。

SELECT PortID FROM Ports 
WHERE (PortID = @PortID) 
AND (FrontInterface <> '-') 
AND (NOT EXISTS(SELECT PortID, Facing 
       FROM PortUsed 
       WHERE (PortID = @PortID) AND (Facing = @Facing) 
       ) 
    ) 

如果检查背面,请用FrontInterface更换FrontInterface。