• sql 图 ,树,层次


    UDF:用户定义函数

    CTE:通用 表 表达式

    set nocount on;
    use zhubenxi
    go
    if object_id('dbo.Parts') is not null
    drop table dbo.Parts;
    if OBJECT_ID ('dbo.BOM') IS NOT NULL
    DROP TABLE DBO.BOM;
    create table dbo.Parts
    (
    partid int not null primary key,
    partname varchar(25) not null
    );
    insert into dbo.Parts (partid ,partname ) values(1,'Black tea'),(2,'white tea'),(3,'latte'),(4,'espresso'),(5,'double espresso'),(6,'cup cover'),(7,'regular cup'),(8,'stirrer'),(9,'espresso cup'),(10,'tea shot'),(11,'milk'),(12,'coffe shot'),(13,'tea leaves'),(14,'water'),(15,'sugar bag'),(16,'ground coffee'),(17,'coffee beans')

    create table dbo.BOM
    (
    partid int not null references dbo.Parts,
    assemblyid int null references dbo.Parts,
    unit varchar(3) not null ,
    qty decimal(8,2) not null,
    unique(partid,assemblyid),
    check(partid<> assemblyid)

    )
    insert into dbo.BOM (partid ,assemblyid ,unit ,qty ) values(1,null,'EA',1.00),(2,null,'EA',1.00),(3,null,'EA',1.00),(4,null,'EA',1.00),(5,null,'EA',1.00),(6,1,'EA',1.00),(7,1,'EA',1.00),(10,2,'EA',1.00),(11,15,'EA',1.00),(12,3,'EA',1.00),(13,4,'EA',1.00),(14,2,'ML',205.00),(15,7,'EA',13.00),(16,12,'G',15.00),(17,16,'G',15.00)


    CREATE TABLE dbo.Cities
    (
    cityid char(3) not null primary key,
    city varchar(30) not null,
    region varchar(30) null,
    country varchar(30) not null
    );
    create table dbo.Roads
    (
    city1 char(3) not null references dbo.Cities,
    city2 char(3) not null references dbo.Cities,
    distance int not null,
    primary key(city1,city2),
    check(city1<city2),
    check(distance>0)
    );
    insert into dbo.Cities (cityid ,city,region ,country ) values('FAI','atlanta','GA','USA'),('ANC','CHICAGO','IL','USA'),('SFO','DENVER','CO','USA'),('SEA','DENVER','CO','USA'),('JFK','DENVER','CO','USA'),('MSP','DENVER','CO','USA')



     insert into dbo.Roads (city1 ,city2,distance ) values('SEA                                                                                                                                                                                   ','JFK',336),('SEA','MSP',3376),('SEA','IAH',3736),('SEA','MCI',3356),('DEN','MIA',3536),('DEN','MJP',3336),('DEN','IAH',336),('DEN','MCI',3376)



     



    DECLARE @ROOT AS INT =1;
     WITH SUBS
     as
     (
        select EMPID,EMPNAME,0 AS LVl,
        CAST('.'+CAST(EMPID AS VARCHAR(10))+'.' AS VARCHAR(max)) as path, 0 as cycle from dbo.EMPLOYEE
        where empid =@ROOT
        union all
        select c.empid, c.empname, p.LVl  +1, cast (p.path + cast (c.empid as varchar(10))+'.' as varchar(max)),
        case when p.path like '%.'+cast(c.empid as varchar(10))+'.%' then 1 else 0 end
        from subs as p join dbo.EMPLOYEE  as c on c.mgrid =p.empid and p.cycle =0
     )
     select path,* from subs where
     cycle =1;


  • 相关阅读:
    hdu_5718_Oracle(大数模拟)
    hdu_2222_Keywords Search(AC自动机板子)
    hdu_5616_Jam's balance(暴力枚举子集||母函数)
    hdu_2255_奔小康赚大钱(KM带权二分匹配板子)
    hdu_2544_最短路(spfa版子)
    hdu_2457_DNA repair(AC自动机+DP)
    hdu_5555_Immortality of Frog(状压DP)
    hdu_2159_FATE(完全背包)
    [USACO2002][poj1944]Fiber Communications(枚举)
    [AHOI2013]打地鼠(网络流)
  • 原文地址:https://www.cnblogs.com/zhubenxi/p/5604614.html
Copyright © 2020-2023  润新知