Oracle表连接的奇怪问题Oracle认证考试

文章作者 100test 发表时间 2009:09:14 23:38:24
来源 100Test.Com百考试题网


"tbbnc">   今天在做计费报表的时候,由于粗心,拿数据的的脚本给写错了,却让我发现了一个很奇怪的问题,下面来让我介绍我发现的这个问题:数据库有表 CHARGE_REF , CLIENT_INVOICE ,CLIENT_INVHDR。其中CHARGE_REF表是保存的收费类型的数据;CLIENT_INVHDR表保存的是发票头部信息,CLIENT_INVOICE表保存的是发票的详细信息,大体如下图所示

Oracle表连接的奇怪问题Oracle表连接的奇怪问题


  我当时拿数据的时候的脚本大体是这样的(这里做了简化处理)
  SELECT C.CDESCPT, I.CNTR, I.AMOUNT, I.CHARGE_CODE
  FROM CLIENT_INVHDR H
  LEFT JOIN CLIENT_INVOICE I ON I.INVOICE_NO = H.INVOICE_NO
  LEFT JOIN CHARGE_REF C ON I.CHARGE_CODE = I.CHARGE_CODE
  WHERE (0 = 0)
  AND I.status = C
  AND H.INVOICE_NO = A09000074
  红色的部分即是我粗心写错的地方,结果当时发现这段脚本执行不正确,当时也没有发现自己的错误,很是郁闷,发现它不是和
  表CHARGE_REF 左连接,而是做了自然连接。CHARGE_REF表有42种收费类型,而CLIENT_INVOICE 表INVOICE_NO 为A09000074 的记录刚好为15,所以查询出来的记录是630。

相关文章


Oracle拆分字符串函数Oracle认证考试
Oracle在Windows操作系统上服务解析Oracle认证考试
LogMiner日志分析工具的使用Oracle认证考试
oracle认证:oracle时间用法Oracle认证考试
Oracle表连接的奇怪问题Oracle认证考试
Oracle查询记录是否存在的效率问题Oracle认证考试
Oracle认证辅导:Oracle并发连接数的设置Oracle认证考试
ORACLE中存取LONG类型字段的方法Oracle认证考试
存储过程批量删除记录Oracle认证考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛