如何在sql中选择具有条件的父子记录?

时间:2016-10-22 06:38:25

标签: sql-server

我需要搜索标题'%p%'。如果我检查标题,父牌和状态作为父级和子级。如果搜索到的标题父级可见为真,则显示子标题。

CREATE TABLE CTE(
        Title VARCHAR(20),
        ParentTitle VARCHAR(20),
        visible VARCHAR(20),    
        showwhenvisiblefalse VARCHAR(20)
    ) 

INSERT INTO CTE
VALUES
('p1', 'Home', 'TRUE', 'TRUE'),
('p1.1', 'p1', 'TRUE', 'TRUE'),
('p1.2', 'p1', 'FALSE', 'TRUE'),    
('p1.3', 'p1.2', 'TRUE', 'TRUE'), 
('p1.3.1', 'p1.3', 'TRUE', 'TRUE'), 
('p2', 'Home', 'TRUE', 'TRUE'), 
('p2.1', 'p2', 'TRUE', 'TRUE'), 
('p2.2', 'p2.1', 'FALSE', 'false'),    
('P3', 'Home', 'TRUE', 'TRUE'), 
('p3.1', 'p3', 'TRUE', 'TRUE'), 
('P3.1.1', 'p3.1', 'FALSE', 'TRUE')

我试过

Select 
   b.Title,
   b.ParentTitle 
from 
   CTE B left join 
   CTE C ON C.ParentTitle=b.Title AND b.visible='TRue' 
where 
   b.ParentTitle in (Select a.ParentTitle 
                     from CTE A join CTE B on a.Title=b.ParentTitle and b.visible='false' )

我需要输出

title
p1
p1.1
p2
p2.1
p2.2
P3
p3.1

需要没有递归。 using..joins ..

0 个答案:

没有答案