我有四个表:
表a:项目编码,客户ID,类别ID,D_A,D_B,D_C,D_D
表b:客户ID,客户姓名
表c:类别ID,类别名称
表d:D_A,D_B,D_C,D_D,价格表A超过千万条数据,无主键,a.项目编码可重复
表D的D_A、D_B、D_C、D_D字段共同构成主键
要生成一张表如下:
输出结果要求:项目编码  客户姓名 类别名称 价格
数据库是oracle7.3我写的下面语句输出结果不对,为什么?
Select a.项目编码 , b.客户姓名 , c.类别名称 , d.价格
 from a,b,c,d
 where 
  a.项目编码='123456'
  and a.客户ID=b.客户ID
  and a.类别ID=c.类别ID
  and a.D_A=d.D_A and a.D_B=d.D_B and a.D_C=d.D_C and a.D_D=d.D_D
另外:
我用下面语句的输出结果比上面的要少
Select a.项目编码 , b.客户姓名 , c.类别名称 , d.价格
 from a where 
  a.项目编码='123456'用join on无法执行,会不会是oracle7.3不支持?
请高人帮我写一下正确的语句。谢谢

解决方案 »

  1.   

    现在都用到oracle11g了,楼主还用oracle7.3版本吗?
    早期版本一些功能没有,用新版本的功能实现的话,说了也白说
      

  2.   

    用distcint过滤a表重复数据Select a.项目编码 , b.客户姓名 , c.类别名称 , d.价格 
    from (select distinct * from a)a,b,c,d 
    where 
      a.项目编码='123456' 
      and a.客户ID=b.客户ID 
      and a.类别ID=c.类别ID 
      and a.D_A=d.D_A and a.D_B=d.D_B and a.D_C=d.D_C and a.D_D=d.D_D 看看查询结果是否达到你的要求?
      

  3.   

    你并没有说对输出记录的要求,这仅是对字段的要求,这个要求第一个sql的结果就能满足了。
      

  4.   

    表a 的数据如下:
    项目编码,客户ID,类别ID,D_A,D_B,D_C,D_D
    123456    1       2      AA  BB  CC   DD  
    123456    2       6      AA  CC  EE   FF
    123456    1       8      WW  HH  KK   LL
    123456    6       9      SA  FA  TR   BH
    123456    3       3      BV  ER  TR  TE
    ......
    ......
    要生成一张表如下: 项目编码  客户姓名 类别名称  价格 
    123456    张三     分类一  100.00
    123456    李四     分类二   90.00
    123456    张三     分类三   20.00
    123456    赵六     分类五   60.00
      

  5.   

    主键
    表b:客户ID
    表c:类别ID 
      

  6.   

    oracle7.3 可以定义视图吗?你的表之间没什么关联
    你看看能不能建一个视图,将  项目编码  客户姓名 类别名称  价格 选出来
    这样你就相当于在一张表里面查了
    我认为是比较方便!