表结构如下:
ID   ParentID    ProjectName
1      0           项目1
2      1           项目2
现在要根据项目的ID,也就是表中的ID来查询该ID的项目名称和他的父类的ID和ProjectName查询结果是:
2   项目2    1    项目1谢谢!!!

解决方案 »

  1.   

    select a.id,a.projectName,b.parentID,b.projectName
    from tb a,tb b
    where a.ParentID=b.id 
      

  2.   

     
    ---------------------------------------------
    --> Author : js_szy
    --> Target : 各位大大,小卒就是想要一朵花
    --> Date   : 2009-12-03 09:22:37
    --> Version: SQL Server 2005
    ---------------------------------------------
        
    --> 测试数据: @t
    declare @t table (ID int,ParentID int,ProjectName varchar(5))
    insert into @t
    select 1,0,'项目1' union all
    select 2,1,'项目2'select a.id,a.projectName,b.ID,b.projectName
    from @t a,@t  b
    where a.ParentID=b.id 
    id          projectName ID          projectName
    ----------- ----------- ----------- -----------
    2           项目2         1           项目1(1 行受影响)
      

  3.   

    CREATE TABLE X(id int,parentid int,projectname varchar(10))
    INSERT INTO X
    SELECT 1,0,'项目1' UNION ALL
    SELECT 2,1,'项目2'SELECT a.id,a.projectname,a.parentid,b.projectname
      FROM x a LEFT JOIN x b ON a.parentid=b.id
      

  4.   

    select m.ID , m.ProjectName , n.ID , n.ProjectName 
    from tb m , tb n
    where m.ParentID = n.id
      

  5.   

    create table tb(ID int,ParentID int,ProjectName varchar(10))
    insert into tb
    select 1,0,'项目1' union all
    select 2,1,'项目2'
    goselect m.ID , m.ProjectName , n.ID , n.ProjectName 
    from tb m , tb n
    where m.ParentID = n.iddrop table tb /*
    ID          ProjectName ID          ProjectName 
    ----------- ----------- ----------- ----------- 
    2           项目2         1           项目1(所影响的行数为 1 行)
    */
      

  6.   

    select
     a.id,a.projectName,b.parentID,b.projectName
    from
     tb a join tb b
    on 
     a.ParentID=b.id 
      

  7.   

    ---用小卒的数据来试试cross apply的用法
    ---------------------------------------------
    --> Author : js_szy
    --> Target : 各位大大,小卒就是想要一朵花
    --> Date   : 2009-12-03 09:22:37
    --> Version: SQL Server 2005
    ---------------------------------------------
                                                    
    --> 测试数据: @t
    declare @t table (ID int,ParentID int,ProjectName varchar(5))
    insert into @t
    select 1,0,'项目1' union all
    select 2,1,'项目2'select a.id,a.projectName,b.ID,b.projectName
    from @t a cross apply @t  b
    where a.ParentID=b.id 
    /*id          projectName ID          projectName
    ----------- ----------- ----------- -----------
    2           项目2         1           项目1(1 行受影响)*/