支持sql连接语句

支持sql连接语句,sql,oracle,join,Sql,Oracle,Join,我是sql和Oracle Apex的新手。最初,我收到了以下工作片段: SELECT Contract_no, customer_code, Start_Date, End_Date FROM Contract 我试图将此代码添加到其中: INNER JOIN Customer ON Contract.customercode = Customer.Customername 添加代码后,我收到一条Oracle/PLSQL:ORA-06550错误消息,其中说明: 无效的user.table.c

我是sql和Oracle Apex的新手。最初,我收到了以下工作片段:

SELECT Contract_no, customer_code, Start_Date, End_Date
FROM Contract
我试图将此代码添加到其中:

INNER JOIN Customer
ON Contract.customercode = Customer.Customername
添加代码后,我收到一条Oracle/PLSQL:ORA-06550错误消息,其中说明:

无效的user.table.column或列规范

我试图通过使用JOIN语句将Customer表中的Customer Name添加到contract表中

我基本上有两个表:
Contract
Customer

Customer
包含以下列

  • 客户代码
  • 客户名称
  • 地址
  • 邮政编码
  • 电话
合同
包含以下列

  • 合同号
  • 客户代码
  • 开始日期
  • 结束日期

第二个样本的字段名称错误

Contract.customercode
应为
Contract.customer\u code
,如果数据库中的命名约定一致,则
customer.Customername
应为
customer.customer\u name
。但是,您可能不想使用customer\u名称。鉴于这两个表都包含customer_代码字段,您可能打算基于这些字段进行连接。加入某人姓名与其代码相同的记录不太可能产生好的结果

所以你的最后一行是

ON Contract.customer_code = Customer.customer_code
试一试


确保在外键上加入主键。

我认为其中一个列名中有空格。 请使用DESC命令发布列定义。 如果有空格,您需要在整个代码中引用带有引号的列,这并不是真正理想的使用方法。 Oracle不建议使用带引号的标识符,因此请不要在列名中使用空格。 请使用别名标识select语句中的列名,并在整个查询中使用一致的列名。 这将有助于代码维护和更好的代码可读性

下面是我试过的一小段代码,供您参考

CREATE TABLE customer(
customer_code VARCHAR2(10),
customer_name  VARCHAR2(10),
address        VARCHAR2(100),
postcode       VARCHAR2(10),
telephone      VARCHAR2(10));


CREATE TABLE contract(
contract_no     NUMBER, 
customer_code   VARCHAR2(10), 
start_date      DATE,
end_date        DATE
);


INSERT INTO customer
values ('1','Person 1','Address 1','12345A','0000000000');

INSERT INTO contract
VALUES(1,'1','01-JAN-2010','31-DEC-2019');

SELECT con.contract_no, cust.customer_code, con.start_date, con.end_date
FROM contract con
INNER JOIN customer cust
ON con.customer_code = cust.customer_code;

Output:
CONTRACT_NO CUSTOMER_C START_DAT END_DATE 
----------- ---------- --------- ---------
          1 1          01-JAN-10 31-DEC-19


HTH

我很困惑。列名是否为
customer\u code
customer code
customer code
ツ 可能会解决这个错误。在界面上,它被称为客户代码,但每当我点击合同页面。有一个SQL查询。预填充此代码:选择合同编号、客户代码、开始日期、结束日期Contract@SaliwarriorAl-Sahli在添加任何内容之前,预填充的代码是否工作?我想是的,但是你的帖子没有明确地说是的。在我添加任何内容之前,它就起作用了
CREATE TABLE customer(
customer_code VARCHAR2(10),
customer_name  VARCHAR2(10),
address        VARCHAR2(100),
postcode       VARCHAR2(10),
telephone      VARCHAR2(10));


CREATE TABLE contract(
contract_no     NUMBER, 
customer_code   VARCHAR2(10), 
start_date      DATE,
end_date        DATE
);


INSERT INTO customer
values ('1','Person 1','Address 1','12345A','0000000000');

INSERT INTO contract
VALUES(1,'1','01-JAN-2010','31-DEC-2019');

SELECT con.contract_no, cust.customer_code, con.start_date, con.end_date
FROM contract con
INNER JOIN customer cust
ON con.customer_code = cust.customer_code;

Output:
CONTRACT_NO CUSTOMER_C START_DAT END_DATE 
----------- ---------- --------- ---------
          1 1          01-JAN-10 31-DEC-19