我有个一个同学的课程设计,做的是个选课系统。
其中有个课程信息表course,结构如下:ID        PreID         Name 
1                       初级课程 
2         1             中低级课程 
3         2             中级课程 
4         3             中高级课程 
5         4             高级课程 ID表示课程ID
PreID表示选修这门课之前要选的课程,即前导课程,用前导课程的ID表示
Name表示课程名称初级课程不需要前导课程。我想用一条SELECT语句把这个表中的三个列的数据选出来,中间PreID列我要用对应
的Name来表示,而不是ID。
小弟苦思冥想,好像没发实现,不知各位看法如何?
 

解决方案 »

  1.   

    -->测试数据1: @course
    declare @course table (ID tinyint,PreID tinyint,Name varchar(10))
    insert into @course
    select 1,null,'初级课程' union all
    select 2,1,'中低级课程' union all
    select 3,2,'中级课程' union all
    select 4,3,'中高级课程' union all
    select 5,4,'高级课程'select a.ID,b.Name,a.Name from @course as a left join @course as b on a.PreID = b.ID
    /*
    ID   Name       Name       
    ---- ---------- ---------- 
    1    NULL       初级课程
    2    初级课程       中低级课程
    3    中低级课程      中级课程
    4    中级课程       中高级课程
    5    中高级课程      高级课程
    */
      

  2.   


    select ID, 
          (select Name
           from course
           where PreID = t.PreID) as PreName,
          Name
    from course t