zoukankan      html  css  js  c++  java
  • 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;


  • 相关阅读:
    详细对比9门主流编程语言
    ZT在谷歌上班感受如何?
    林锐:5 C++/C程序的基本概念
    林锐书:写一个hello world by seasoned professional
    C 中重载一词中的“重”字读ZHONG4还是CHONG2?
    ZT C++ 重载、覆盖和隐藏的区别
    安全模式 冷启动
    Wi-Fi
    再谈男性饮食保健
    fstat、stat和lstat 区别(转)
  • 原文地址:https://www.cnblogs.com/zhubenxi/p/5604614.html
Copyright © 2011-2022 走看看