2

私は3つのテーブルを持っています

ノード テーブル - Nodeid、ノード関係 ID(NodeRelID)

ノード関係テーブル - id、Nodeid、Node Link id

Eventstatus テーブル - ID、ノード ID、ノード ステータス。

各ノードの 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 を与えたいと思います。これを同じテーブルに保存したいので、ビューの case ステートメントを使用してこれを試みました。そのようです:

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`);

誰かが私を正しい方向に向けることができますか?

4

1 に答える 1

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
于 2011-07-22T16:43:56.393 に答える