oracle 10g sql语句 标识符无效,但是表中确实有这个标识,有图有真相

Creamicend 2014-01-13 10:43:01
我用的是自带的表格,emp,salgrade表
emp:

说的是雇员表,里面有部门编号,雇员编号,这里用的是部门编号(deptno)
salgrade:

说的是雇员的工资分等级(grade),每个等级的最高工资(hisal)和最低工资(losal)

我自己写的和错误如下:
希望通过下面图片中的代码可以求出每个部门的平均薪水等级。


如果不写t.deptno = emp.deptno,就不会有错,但是结果是不对的,

求大神指点 一二!!!
...全文
857 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
_拙计 2014-01-16
  • 打赏
  • 举报
回复
引用 4 楼 Creamicend 的回复:
我刚刚开始学,你说的我不太懂
2楼是说 要么 你写成3楼这样的 要么写成下面这样的
select t1.deptno, t2.grade
    from (select deptno, avg(sal) as avgsal from emp group by deptno) t1,
         salgrade t2
   where t1.deptno = t2.deptno
     and t1.avgsal between t2.losal and t2.hisal
lqscoke 2014-01-16
  • 打赏
  • 举报
回复
一个用 逗号,另两张表用left join ..不能写在ON后面的。。。
Creamicend 2014-01-14
  • 打赏
  • 举报
回复
我刚刚开始学,你说的我不太懂
forgetsam 2014-01-14
  • 打赏
  • 举报
回复
你把条件写在on里,就意味着里面提到的表必须是join连接,你把表直接写成笛卡尔积,就意味着条件必须写在where里。 我第一次看见有人混着用。
  • 打赏
  • 举报
回复

select ds.deptno, t2.grade
  from (select deptno, avg(sal) as avgsal from emp group by deptno) ds
  left join salgrade t2
    on ds.avgsal between t2.losal and t2.hisal
Creamicend 2014-01-13
  • 打赏
  • 举报
回复
额,是标识符无效的错误

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧