首页 > 解决方案 > 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)

标签: sqloracle

解决方案


首先,学会使用正确的、明确的、标准的、可读的JOIN语法。

其次,视图不能有重复的名称,例如PERSONNEL_IDFIRST_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;

推荐阅读