我有一类似财务项目的两个表,一个为科目表(t_km),字段分别为kmid(科目id),kmmc(科目名称),sjkm(上级科目,即它的父科目),科目表为两级科目结构。另一表为凭证表(t_pzb),pzno(凭证号),yjid(一级科目id),ejid(二级科目id),我要求的sql语句结果为:当选某凭证号时,可列出如下内容,凭证号,一级科目名称,二级科目名称。
例如:科目表的内容为:
kmid       kmmc      sjkm
1      土地价款         0
2      政府地价配套费   1
凭证表的内容为:
pzno   yiid       ejid
001    1          2
通过这两个表的关联,我要显示的结果是:
001,土地价款,政府地价配套费
请教该sql语句如何写?

解决方案 »

  1.   

    本帖最后由 libin_ftsafe 于 2008-12-12 16:10:37 编辑
      

  2.   

    select pzno
        , yimc=(select kmmc from t_km where kmid=yjid)
        , ejmc=(select kmmc from t_km where kmid=ejid) 
    from t_pzb
      

  3.   

    select 
        a.pzno,
        max(case b.kmid when a.yiid then b.kmmc end),
        max(case b.kmid when a.ejid then b.kmmc end) 
    from 
        凭证表 a,科目表 b 
    group by 
        a.pzno
      

  4.   


    select pzno+','+
           (select kmmc from t_km where kmid=t_pzb.yiid)+','+
           (select kmmc from t_km where kmid=t_pzb.ejid) from t_pzb-- 001,土地价款,政府地价配套费select pzno,
           kmmc1=(select kmmc from t_km where kmid=t_pzb.yiid),
           kmmc2=(select kmmc from t_km where kmid=t_pzb.ejid) from t_pzb-- 001 土地价款 政府地价配套费
      

  5.   

    select a.pzno,
        b.kmmc as yjkmmc,
        c.kmmc as ejkmmc
    from t_pzb a, t_km b, t_km c
    where a.yiid=b.kmid and a.ejid=c.kmid
      

  6.   

    select pzno,(select k.kmmc from t_km k,t_pzb p where p.yjid = k.kmid  and p.pzno = '001') yjmc,
    (select k.kmmc from t_km k,t_pzb p where p.ejid = k.kmid and p.pzno = '001') ejmc from t_pzb where pzno = '001';应该还有更简单的办法的。。
      

  7.   

    select
      a.pzno,
      (select kmmc from 科目表 where kmid=a.yiid),
      (select kmmc from 科目表 where kmid=a.ejid)
    from 凭证表 a/**
    pzno                                                           
    -------------------- -------------------- -------------------- 
    001                  土地价款                 政府地价配套费(所影响的行数为 1 行)
    **/