网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.如何使用Oracle中的 COALESCE 函.
.快速转移数据的方法.
.如何应对ORACLE面试中的问题技术.
.无责任Oracle图书简评 (1).
.ORACLE 9.2.0.4 PATCHES 安装!.
.Oracle SES 的实现案例.
.vb 调用 Oracle 函数返回数据集的.
.如何设置用户密码过期时间.
.Oracle 9i 数据库WITH查询语法小.
.Oracle 数据库向 MS SQL Server .
.oracle_sid,server_name,网络连接.
.导出oracle数据库对象---同义词,.
.Oracle9i Supplied PL/SQL Packa.
.oracle的update问题.
.Oracle中对两个数据表交集的查询.
.用于企业的Oracle9i真正的应用集.
.在PL/SQL 开发中调试存储过程和函.
.搭建Oracle高可用数据库环境.
.SQL编写规范.
.Oracle中导入文本数据的方法.

案例讨论:Oracle两表连接

发表日期:2008-2-9


Oracle的两表连接怎么实现,原来是SQL的现在想换成oracle的,SQL的如下:   SELECT COUNT(*) AS COUNT, SUM(timelen) AS totlekeeptime, SUM(moneys) AS totletimefee, SUM(realmoneys) AS totlenewfee, areacode.area_name FROM phonedata INNER JOIN areacode ON LEFT(phonedata.ani, LEN(areacode.area_code)) = areacode.area_code WHERE starttime>'2005-12-27 00:00:00' and starttime<'2005-12-27 23:59:59' and endtime is not null and userid like '001136' GROUP BY areacode.area_name order by totlekeeptime   oracle里该怎么办呢?   讨论一:   SELECT AREACODE.AREA_NAME,COUNT(*) AS COUNT,   SUM(TIMELEN) AS TOTLEKEEPTIME,   SUM(MONEYS) AS TOTLETIMEFEE,   SUM(REALMONEYS) AS TOTLENEWFEE,   FROM PHONEDATA INNER JOIN AREACODE ON (LEFT(PHONEDATA.ANI,LEN(AREACODE.AREA_CODE)) = AREACODE.AREA_CODE)   WHERE STARTTIME>'2005-12-27 00:00:00'   AND STARTTIME<'2005-12-27 23:59:59'   AND ENDTIME IS NOT NULL   AND USERID LIKE '001136%'   GROUP BY AREACODE.AREA_NAME   ORDER BY TOTLEKEEPTIME   /   说明:只是不知道你没有限定哪个表的那些字段是不是只有一个表里面有,假如不是,会报错的。   点评:有错误:   1.oracle里两表连接不是用INNER JOIN AREACODE ON 而是用外连接LEFT OUTER JOIN .. ON或内连接LEFT in JOIN .. ON   2.oracle里没有LEFT函数,取字接数是用length;   讨论二:   SELECT AREACODE.AREA_NAME,COUNT(*) AS COUNT,   SUM(TIMELEN) AS TOTLEKEEPTIME,   SUM(MONEYS) AS TOTLETIMEFEE,   SUM(REALMONEYS) AS TOTLENEWFEE,   FROM PHONEDATA ,AREACODE   where substring(PHONEDATA.ANI,1,length(AREACODE.AREA_CODE)) = AREACODE.AREA_CODE   and to_date(STARTTIME,'yyyy-mm-dd hr24:mi:ss')>'2005-12-27 00:00:00'   AND to_date(STARTTIME,'yyyy-mm-dd hr24:mi:ss')<'2005-12-27 23:59:59'   AND ENDTIME IS NOT NULL   AND USERID LIKE '001136%'   GROUP BY AREACODE.AREA_NAME   ORDER BY TOTLEKEEPTIME   点评:两表连接那错了,但这地方: substring(PHONEDATA.ANI,1,length(AREACODE.AREA_CODE)) = AREACODE.AREA_CODE是对的;   最佳答案:   SELECT COUNT(*) AS COUNT, SUM(timelen) AS totlekeeptime, SUM(moneys) AS totletimefee,   SUM(realmoneys) AS totlenewfee, areacode.area_name   FROM phonedata ,areacode   WHERE starttime>'2005-12-27 00:00:00' and starttime<'2005-12-27 23:59:59'   and endtime is not null and userid like '001136'   /*and LEFT(phonedata.ani, length(areacode.area_code)) = areacode.area_code */   and substr(phonedata.ani, 1,length(areacode.area_code)) = areacode.area_code   GROUP BY areacode.area_name order by totlekeeptime   说明:inner join 直接相等就可以了,left换成substr。

上一篇:Oracle查询指定索引提高查询效率 人气:1375
下一篇:ORACLE索引介绍与高性能SQL优化 人气:1174
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐