项目类别表
Table(ID,ParentID,Code,Name)
表(唯一编号,父ID,编号,名称)1,0,1,消费项目
2,0,2,服务项目
3,1,101,酒水
4,1,102,小吃
5,3,10101,白酒
6,3,10102,啤酒
7,2,201,足疗项目明细表
Table(类别ID,Code,Name)
表(类别ID,编号,名称)
5,1010101,茅台
5,1010102,衡水老白干
6,1010201,百威
6,1010202,嘉士伯
7,20101,中药足疗
1)当我选择 (消费项目) 的时候,只知道ID= 1需要列出
所属的所有项目明细表
5,1010101,茅台
5,1010102,衡水老白干
6,1010201,百威
6,1010202,嘉士伯
7,20101,中药足疗2)当我选择 (酒水) 的时候,只知道ID= 3需要列出
所属的所有项目明细表
5,1010101,茅台
5,1010102,衡水老白干
6,1010201,百威
6,1010202,嘉士伯3)当我选择 (白酒) 的时候,只知道ID= 5需要列出
所属的所有项目明细表
5,1010101,茅台
5,1010102,衡水老白干这样的SQL语句怎么写呢!就是当我知道ID的时候,我需要知道该ID下的子ID,这个语句怎么写呢!?
 

解决方案 »

  1.   

    仅靠sql语句不行,因为级数不固定
      

  2.   

    每级增加的长度是固定的话,一般用like再加上数据库提供的len/Length函数()就可以解决了
    1)当我选择 (消费项目) 的时候,只知道ID= 1需要列出
    所属的所有项目明细表
    5,1010101,茅台
    5,1010102,衡水老白干
    6,1010201,百威
    6,1010202,嘉士伯
    -----7,20101,中药足疗 这个是不是不能列出来??
      

  3.   

    var
      vCode: string;
    begin
    //选中的时候
      vCode := 项目类别表.FieldByName('Code').AsString;
    //取的时候
      'select * from 项目明细表 where Code like ' + QuotedStr(vCode + '%');其他自己补充吧!