Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle11g 列在列中有明确定义_Oracle11g - Fatal编程技术网

Oracle11g 列在列中有明确定义

Oracle11g 列在列中有明确定义,oracle11g,Oracle11g,我的桌子 DESC emp Name Null Type ------------------------------ -------- -------------------------- EMP_NO NUMBER EMP_NAME VARCHAR2(10) ADDRESS

我的桌子

DESC emp

Name                           Null     Type
------------------------------ -------- --------------------------
EMP_NO                                  NUMBER
EMP_NAME                                VARCHAR2(10)
ADDRESS                                 VARCHAR2(15)
PH_NO                                   NUMBER(10)
DEPT_NO                                 NUMBER
结果:

1   ram ctr 8892939927  100
2   mohan   ptr 7569936347  101
3   mallu   ppt 9553438342  102
4   scoot   dmc 9874563210  103
5   jim plr 9236548875  104
6   ravi    tpt 8562398756  105
7   manju   hyd 7562398742  106
8   manoj   hyd 869523654   107
9   sarath  ctr 9632158769  108
10  hemanth mpk 9632147852  109


desc salary

Name                           Null     Type
------------------------------ -------- --------------------------
EMP_NO                                  NUMBER
SALARY                                  NUMBER(10)
PERIOD                                  VARCHAR2(10)
START_DATE                              DATE
END_DATE                                DATE
1   12580   15months    12-DEC-07   10-DEC-10
2   15500   19months    10-JAN-07   10-DEC-11
3   7777    18months    11-JUL-07   21-APR-11
4   9999    11months    07-JUL-07   31-JAN-11
5   8500    9months         12-MAR-07   27-MAR-11
6   10000   20months    17-SEP-07   01-AUG-11
7   25000   7months         17-NOV-07   26-JUL-11
8   100000  6months         05-MAY-07   21-JUN-11
9   35000   16months    28-FEB-08   21-JUN-11
10  5000    16months    02-DEC-08   19-AUG-11
结果:

1   ram ctr 8892939927  100
2   mohan   ptr 7569936347  101
3   mallu   ppt 9553438342  102
4   scoot   dmc 9874563210  103
5   jim plr 9236548875  104
6   ravi    tpt 8562398756  105
7   manju   hyd 7562398742  106
8   manoj   hyd 869523654   107
9   sarath  ctr 9632158769  108
10  hemanth mpk 9632147852  109


desc salary

Name                           Null     Type
------------------------------ -------- --------------------------
EMP_NO                                  NUMBER
SALARY                                  NUMBER(10)
PERIOD                                  VARCHAR2(10)
START_DATE                              DATE
END_DATE                                DATE
1   12580   15months    12-DEC-07   10-DEC-10
2   15500   19months    10-JAN-07   10-DEC-11
3   7777    18months    11-JUL-07   21-APR-11
4   9999    11months    07-JUL-07   31-JAN-11
5   8500    9months         12-MAR-07   27-MAR-11
6   10000   20months    17-SEP-07   01-AUG-11
7   25000   7months         17-NOV-07   26-JUL-11
8   100000  6months         05-MAY-07   21-JUN-11
9   35000   16months    28-FEB-08   21-JUN-11
10  5000    16months    02-DEC-08   19-AUG-11
联接查询:

select emp_no,
       emp_name,
       dpt_no,
       salary 
from emp 
   join salary on emp.dpt_no=salary.dpt_no

但我得到的错误是“列定义错误”。如何解决此问题?

如果表(薪资和emp)中的列名相同,并且您要加入表,则必须指定要选择列(薪资或来自emp)的表格格式

在您的情况下,解决方案是使用salary.dpt\u no而不是dpt\u no

选择emp_no、emp_name、salary.dpt_no、emp上emp join salary的salary.dpt_no=salary.dpt_no


您需要完全限定选择列表中的列(在
JOIN
条件中的方式)。否则Oracle就不知道应该从哪个表中获取列
dept\u no

select emp.emp_no,
       emp.emp_name,
       emp.dpt_no,  
       salary.salary 
from emp 
   join salary on emp.dpt_no=salary.dpt_no;
始终限定列是一种很好的编码风格——至少在涉及多个表的查询中是如此——即使它们不是不明确的

如果不想键入完整的表名,可以使用(maningful)别名:


在选择列表中,在每一列前面加上表名。我没有得到你。请举个例子,我得到了我的愿望