有两个表 a 和b,希望能够通过查询得到表c或者表d的结果
表a
NAME MARRY EDUCATION
abc 2 4
aa 2 5
bb 1 5
cc 2 5


表b
CODE_NO CODE_NAME PARENT_NO
1 小学 education
2 初中 education
3 高中 education
4 本科 education
5 硕士 education
1 未婚 marry
2 已婚 marry
3 离异 marry

表c
NAME MARRY marry1 EDUCATION education1
abc 2 已婚 4 本科
aa 2 已婚 5 硕士
bb 1 未婚 5 硕士
cc 2 已婚 5 硕士


表d
NAME marry1 education1
abc 已婚 本科
aa 已婚 硕士
bb 未婚 硕士
cc 已婚 硕士

解决方案 »

  1.   

    select  a.NAME,b.CODE_NAME,c.CODE_NAME    
      from a a,b b,b c 
          where a.MARRY=b.CODE_NO  and b.PARENT_NO='marry' 
               and a.EDUCATION=c.CODE_NO  and c.PARENT_NO='education'
      

  2.   

    -- TRY IT ..  这表设计得无语了 ...
    SELECT A.NAME, 
           A.MARRY, 
           DECODE(B.PARENT_NO,'MARRY',B.CODE_NAME) "MARRY1",
           A.EDUCATION,
           DECODE(B.PARENT_NO,'EDUCATION',B.CODE_NAME) "EDUCATION1"
      FROM A,
           B
     WHERE A.EDUCATION||'EDUCATION' = B.CODE_NO||UPPER(PARENT_NO)
        OR A.MARRY||'MARRY' = B.CODE_NO||UPPER(PARENT_NO);
      

  3.   

    select  a.NAME,b.CODE_NAME,c.CODE_NAME    
      from a a,b b,b c 
          where a.MARRY=b.CODE_NO  and b.PARENT_NO='marry' 
               and a.EDUCATION=c.CODE_NO  and c.PARENT_NO='education';SELECT A.NAME, 
           A.MARRY, 
           DECODE(B.PARENT_NO,'MARRY',B.CODE_NAME) "MARRY1",
           A.EDUCATION,
           DECODE(B.PARENT_NO,'EDUCATION',B.CODE_NAME) "EDUCATION1"
      FROM A,
           B
     WHERE A.EDUCATION||'EDUCATION' = B.CODE_NO||UPPER(PARENT_NO)
        OR A.MARRY||'MARRY' = B.CODE_NO||UPPER(PARENT_NO);
    都不能够得到结果;还是要谢谢大家!
    那样建表是想少建上十个表。