Как получить значение из той же таблицы в другой записи, используя родительский идентификатор в предложении where - PullRequest
0 голосов
/ 06 мая 2020

В древовидной структуре я хочу найти значение в родительской записи, чтобы узнать, есть ли у него значение в поле с именем nodOpen (может быть 0 для закрытых и 1 для открытых). Если поле родительских записей nodOpen равно 1, то текущая запись видна, и наоборот.

strSQL = "SELECT nodLevel, nodNum, nodLead, etc., nodParent FROM tblNode WHERE PARENTNODE IS OPEN Visible= 1 ORDER BY nodSort"

Возможно ли это в одном SQL -предложении?

1 Ответ

0 голосов
/ 06 мая 2020

Предположим, что таблица имеет следующую структуру.

create table tblNode (
    nodNum int not null,
    nodLevel int,
    nodOpen int not null,
    nodSort int not null,
    nodLead int not null,
    nodParent int null,
    -- insert other columns here(?)
    constraint PK_tblNode primary key clustered (nodNum),
    constraint FK_tblNode_tree foreign key (nodParent)
        references tblNode(nodNum)
);

Запрос будет выглядеть примерно так.

select 
    nodLevel, 
    nodNum, 
    nodLead, 
    nodParent, 
    nodSort -- you may have to include this column to sort on it later
    /* insert other columns here(?) */ 
from tblNode as childNode
inner join tblNode as parentNode on parentNode.nodNum = childNode.nodParent
where parentNode.nodOpen = 1
order by nodSort
...