2011-07-22 27 views
2

我有3個表SQL VIEW使用連接

節點表 - 節點ID,節點關係ID(NodeRelID)

節點關係表 - ID,節點ID,節點鏈路ID

Eventstatus TABEL - ID, Nodeid,節點狀態。

我想創建一個視圖,它顯示每個節點的id和與之相關的節點的狀態。我在這裏完成了;

CREATE VIEW `view_alarm` AS 

select `node`.`NodeID` AS `NodeID`,`eventstatus`.`EventID` AS `EventID` 

from ((`node` join `node_relationship`) join `eventstatus`) 

where ((`node`.`NodeRelID` = `node_relationship`.`id`) and (`node_relationship`.`Node_LinkID` = `eventstatus`.`NodeID`)); 

現在我想找回那個沒有關係,並自動給他們一個0的關係狀態的地方,我想這個存儲在同一個表,所以我必須通過嘗試此的任何節點視圖中的案例陳述。像這樣:

CREATE view `view_alarm` AS select 

`node`.`NodeID` AS `NodeID`, 
(case when (`node_relationship`.`Node_LinkID` = `eventstatus`.`NodeID`) then `eventstatus`.`EventID` 
when (`node_relationship`.`Node_LinkID` <> `eventstatus`.`NodeID`) then `eventstatus`.`EventID` '0' end) AS `EventID` 

from ((`node` join `node_relationship`) join `eventstatus`) 

where (`node`.`NodeRelID` = `node_relationship`.`id`); 

有人能指出我在正確的方向。

+0

嗯,我無法看透這一點剛纔,但不要使用慣用'JOIN'語法:'SELECT ax,FROM FROM JOIN b ON(a.a_id = b.a_id)'。另外,你是否只需要一個外部連接? –

回答

0

使用外連接在一個遞歸加入

FROM Node n 
    LEFT JOIN Node_Relationship nr1 
      ON n.key = nr.key 
    LEFT JOIN Node_Relationship nr2 
      ON n.key = nr2.Key 
      AND n.key IS NULL 

用它在你的情況:

CASE 
     WHEN nr2.[key] IS NOT NULL THEN 0