欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

求解释一段sql语句,该怎么处理

更新时间: 2014-01-05 02:12:26 责任编辑: Author_N1

 

求解释一段sql语句
CREATE OR REPLACE VIEW vw_news
AS
SELECT a.*, ROUND(SYSDATE - TO_DATE(upddate, 'YYYY-MM-DD HH24:MI:SS')) datesexp, b.uname, NVL(项目名, '-') projectname FROM
  (t_news a 
  INNER JOIN t_user b ON a.userid = b.id)
  LEFT OUTER JOIN t_project c ON a.projectid = c.项目编号
  WHERE a.id <> 0 
  -- ORDER BY a.isbig ASC, a.isrcmd ASC, a.ord ASC, a.id DESC
;

求解释这几句代码是什么意思啊?
还有,如果我想把T_PRJNODETASKS中给的  计划完成时间   实际完成时间  任务描述  这三个字段加到这个视图中,应该怎么改代码呢?


--参考方法--
相当于
SELECT a.*, ROUND(SYSDATE - TO_DATE(upddate, 'YYYY-MM-DD HH24:MI:SS')) datesexp, b.uname, NVL(项目名, '-') projectname FROM
  t_news a ,t_user b ,t_project c
  WHERE a.id <> 0
and a.userid = b.id
and a.projectid = c.项目编号(+);

加上d表
SELECT a.*, ROUND(SYSDATE - TO_DATE(upddate, 'YYYY-MM-DD HH24:MI:SS')) datesexp, b.uname, NVL(项目名, '-') projectname FROM
  t_news a ,t_user b ,t_project c, T_PRJNODETASKS d
  WHERE a.id <> 0
and a.userid = b.id
and a.projectid = c.项目编号(+)
--你没给d表的字段啊
and a.projectid = d.项目编号(+);
--参考方法--
SELECT a.*,
ROUND(SYSDATE - TO_DATE(upddate, 'YYYY-MM-DD HH24:MI:SS')) datesexp,
b.uname, NVL(项目名, '-') projectname FROM
  t_news a 
  INNER JOIN t_user b ON a.userid = b.id)
  LEFT OUTER JOIN t_project c ON a.projectid = c.项目编号
  WHERE a.id <> 0 

系统日期减去upddate日期 四舍五入,nvl如果项目名为空,显示'-' 等值连接一下t_user 表 关联条件a.userid = b.id  在左连接   连接条件 a.projectid = c.项目编号

--参考方法--
SELECT a.*,
       ROUND(SYSDATE - TO_DATE(upddate, 'YYYY-MM-DD HH24:MI:SS')) datesexp,
       b.uname,
       NVL(项目名, '-') projectname,
       d.计划完成时间,
       d.实际完成时间,
       d.任务描述
  FROM (t_news a INNER JOIN t_user b ON a.userid = b.id)
  LEFT OUTER JOIN t_project c  ON a.projectid = c.项目编号
  LEFT OUTER JOIN T_PRJNODETASKS ON a.projectid = d.项目编号
 WHERE a.id <> 0

--参考方法--
引用:
Quote: 引用:

SELECT a.*,
       ROUND(SYSDATE - TO_DATE(upddate, 'YYYY-MM-DD HH24:MI:SS')) datesexp,
       b.uname,
       NVL(项目名, '-') projectname,
       d.计划完成时间,
       d.实际完成时间,
       d.任务描述
  FROM (t_news a INNER JOIN t_user b ON a.userid = b.id)
  LEFT OUTER JOIN t_project c  ON a.projectid = c.项目编号
  LEFT OUTER JOIN T_PRJNODETASKS ON a.projectid = d.项目编号
 WHERE a.id <> 0

NVL(项目名, '-') projectname为什么不说明这个是属于哪个表的?

如果你的a,b,c,d表中只有一个表有“项目名”这个字段,这样可以省略指定,系统可以自动识别
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:12:26
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/6942/
本文WWW.DOC100.NET DOC100.NET版权所有。