2013-01-21 88 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。