SQL ВИД С СОЕДИНЕНИЯМИ - PullRequest
2 голосов
/ 22 июля 2011

У меня есть 3 таблицы

Таблица узлов - Nodeid, идентификатор узла связи (NodeRelID)

Таблица отношений узла - идентификатор, узел, идентификатор ссылки узла

Eventstatus Tabel -id, Nodeid, Node Status.

Я хочу создать представление, в котором оно отображает идентификатор каждого узла и состояние узла, связанного с ним.Я сделал это здесь;

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

Может кто-нибудь направить меня в правильном направлении.

1 Ответ

0 голосов
/ 22 июля 2011

Использование внешних объединений в рекурсивном объединении

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...