【问题标题】:Trying To Select A Foreign Key Column Using Concatenation Operator尝试使用连接运算符选择外键列
【发布时间】:2016-01-24 14:06:49
【问题描述】:

我一直在尝试将一个表中的所有列选择为一列。问题是我似乎无法显示外键“department_id”。如果我运行这段代码:

select employee_id || ',' || ' ' || last_name || ',' || ' ' || job_id || ',' || ' ' ||TO_CHAR(hire_date, 'DD Mon YY' ) || ',' || ' '|| department_id
AS "The_Output"
FROM employee;

“department_id”的信息根本不显示。虽然这段代码:

select employee_id || ',' || ' ' || last_name || ',' || ' ' || job_id || ',' || ' ' ||TO_CHAR(hire_date, 'DD Mon YY' ) || ',' || ' '|| department_id
AS "The_Output"
FROM employee, department;

给我这个错误:

ORA-00918:列定义不明确

我尝试将它们联合起来,但没有成功

【问题讨论】:

标签: sql oracle select concatenation


【解决方案1】:

这是因为在employee 和department 表中都存在department_id。所以选择时使用别名。

您的查询也缺少连接条件,因此您将从两个表中获得笛卡尔积。使用类似下面的东西。

SELECT E.EMPLOYEE_ID || ',' || ' ' || E.LAST_NAME || ',' || ' ' || E.JOB_ID || ',' || ' ' ||TO_CHAR(E.HIRE_DATE, 'DD Mon YY' ) || ',' || ' '|| E.DEPARTMENT_ID
AS "The_Output"
FROM EMPLOYEE E INNER JOIN DEPARTMENT D
ON E.DEPARTMENT_ID=D.DEPARTMENT_ID

【讨论】:

  • 我试过这个:SELECT employee.employee_id || ',' || ' ' || employee.last_name || ',' || ' ' || employee.job_id || ',' || ' ' ||to char(HIRE_DATE, 'DD Mon YY' ) || ',' || ' '|| employee.department_id AS "The_Output" FROM employee INNER JOIN department_id ON employee.department_id=department.department_id; 它给了我一个缺失的表达式错误
  • 好的,我明白了,你正在加入employee INNER JOIN department_id。应该是department。准确地尝试我的查询。
  • 它说 > 没有找到数据。我还将 INNER JOIN 中的 department_id 更改为部门,这给了我混乱的表达错误。
  • :) 那是因为您的表中的一个是空的或者没有匹配的 department_id
  • 我刚刚在两个表中查看了 department_id。虽然它在作为主键的部门表中是满的,但在作为外键的员工中它是空的。我应该手动将相同的数据插入到员工表的部门 ID 中吗?
猜你喜欢
  • 1970-01-01
  • 2013-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多