sql - ORA-00957: 创建视图时重复列名错误
问题描述
我收到 ORA-00957:尝试创建视图时出现重复列名错误。问题是什么 ?如何修复我的查询?
CREATE VIEW SIGN
AS
SELECT
CONTRACTS.CONTRACT_ID, CONTRACTS.PERSONNEL_ID, CONTRACTS.CUSTOMER_ID,
CUSTOMERS.FIRST_NAME,
PERSONNEL.FIRST_NAME, CUSTOMERS.CUSTOMER_ID, PERSONNEL.PERSONNEL_ID
FROM
CONTRACTS, CUSTOMERS, PERSONNEL
WHERE
(CONTRACTS.PERSONNEL_ID = PERSONNEL.PERSONNEL_ID)
AND (CONTRACTS.CUSTOMER_ID = CUSTOMERS.CUSTOMER_ID)
解决方案
首先,学会使用正确的、明确的、标准的、可读的JOIN
语法。
其次,视图不能有重复的名称,例如PERSONNEL_ID
和FIRST_NAME
在您的视图中。
第三,表别名使查询更易于编写和阅读。
所以:
CREATE VIEW SIGN AS
SELECT c.CONTRACT_ID, c.PERSONNEL_ID, c.CUSTOMER_ID,
cu.FIRST_NAME,
p.FIRST_NAME as PERSONNEL_FIRST_NAME
FROM CONTRACTS C JOIN
CUSTOMERS CU
ON C.CUSTOMER_ID = CU.CUSTOMER_ID JOIN
PERSONNEL P
ON C.PERSONNEL_ID = p.PERSONNEL_ID;
推荐阅读
- php - 在 Slim 框架中管理跨多个路由共享的数据的最佳方法是什么?
- php - 部署到 Heroku 后 MySQL INSERT 错误
- swift - 使用 SwiftUI 和 WebSockets 将代码添加到新行
- reactjs - 从 api 渲染数据
- android - 在从 Intent.ACTION_CREATE_DOCUMENT 从 ParcelFileDescriptor 创建 FileOutputStream 之前确定可用空间
- c# - 如何在 Linux 上的 asp.net 核心中捕获退出信号?
- javascript - 绘制一条总是与其父 BoxElement 一样宽的线?
- powershell - 获取总磁盘使用量的总和
- python - 有没有办法将协议“添加”到已经创建的 python 类?
- sql - 根据条件将行转换为列