基本查询搜索问题

时间:2016-02-08 00:45:48

标签: oracle sqlplus

不确定这是否是正确的地方,但我对初学者sql有疑问。

我有表dept和emp,其中包括:

SQL> desc dept;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------

 DEPTNO                                             NUMBER(2)
 DNAME                                              VARCHAR2(14)
 LOC                                       NOT NULL VARCHAR2(13)

SQL> desc emp;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------

 EMPNO                                              NUMBER(4)
 ENAME                                              VARCHAR2(10)
 JOB                                                VARCHAR2(9)
 MGR                                                NUMBER(4)
 HIREDATE                                           DATE
 SAL                                                NUMBER(7,2)
 COMM                                               NUMBER(7,2)
 DEPTNO                                             NUMBER(2)

我需要搜索部门30中的所有工作并包括部门30的位置。

我正在尝试的是:

SQL> select emp.job, dept.deptno, dept.loc
  2  from emp, dept
  3  where emp.deptno = dept.deptno
  4  where deptno = '30';
where deptno = '30'
*
ERROR at line 4:
ORA-00933: SQL command not properly ended

但是你可以看到它不起作用,我尝试了不同的变化,但仍然没有运气。我在正确的轨道上吗?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

听起来你想要这样的东西。如果where子句中有多个条件,则只需指定where一次,然后将其与andor条件合并。

select emp.job, dept.deptno, dept.loc
 from emp, dept
where emp.deptno = dept.deptno
  and dept.deptno = 30;

除非您确实需要使用旧的连接语法,否则您可能应该从SQL 99语法开始。它使得在数据库之间移动变得更加容易,它通过分离连接和过滤条件使您的查询更容易阅读,并且当您开始处理外连接时,它使生活变得更加容易。

select emp.job, dept.deptno, dept.loc
 from emp 
      join dept
        on( emp.deptno = dept.deptno )
where dept.deptno = 30;