支持加入表。(Oracle Apex 的新功能)
Posted
技术标签:
【中文标题】支持加入表。(Oracle Apex 的新功能)【英文标题】:Support with joining to tables.(New to Oracle Apex) 【发布时间】:2019-12-11 13:36:56 【问题描述】:您好,基本上我正在尝试使用下面的代码将客户名称列加入合同列。但它给了我一个我不明白的错误。
错误:
Region → Contract → Source → SQL Query ORA-06550: line 5, column 28: ORA-00942: table or view does not exist
SQL:
select CONTRACT_NO,
CUSTOMER_CODE,
START_DATE,
END_DATE
from CONTRACT INNER JOIN CUSTOMER
ON Contract.code = Customer.name
[
【问题讨论】:
我似乎无法发布另一张图片。它取代了我所拥有的。但另一个图像基本上包含合同表。它有以下列:合同编号、客户代码开始日期和结束日期。我 那么错误是什么? 区域 → 合同 → 源 → SQL 查询 ORA-06550:第 5 行,第 28 列:ORA-00942:表或视图不存在。这就是它所说的。 【参考方案1】:据我了解,您需要当前列以及另一个表中的名称列。
select co.CONTRACT_NO,
co.CUSTOMER_CODE,
co.START_DATE,
co.END_DATE,
cu.name
from CONTRACT co
INNER JOIN CUSTOMER cu
ON co.code = cu.name;
这看起来像是应该可以工作的代码,但是您需要检查表中是否存在您需要它们的所有列,并且 co.code 和 cu.name 实际上确实具有相同的值。
另外,对于以后的问题,标签是 oracle-apex,这次我为你改了。顶点标签是一个不同的不相关的东西。
【讨论】:
【参考方案2】:我认为其中一个列名中有一个空格。请使用 DESC 命令发布列定义。如果有空格,您需要在整个代码中用引号引用此类列,这并不是真正理想的使用。 Oracle 不推荐使用带引号的标识符,因此请不要在列名中留有空格。请使用别名来标识 select 语句中的列名,并在整个查询中使用一致的列名。这将有助于代码维护和更好的代码可读性。
下面是我尝试的一小段代码供您参考。
-- Create tables
CREATE TABLE customer(
"customer code" VARCHAR2(10),
"customer name" VARCHAR2(50),
address VARCHAR2(100),
postcode VARCHAR2(10),
telephone VARCHAR2(10));
CREATE TABLE contract(
"contract no" VARCHAR2(10),
"customer code" VARCHAR2(10),
"start date" DATE,
"end date" DATE
);
-- Populate values
INSERT INTO customer
values ('4188','Mrs Alma Levy','"Ap #739-3930"','FA93 6JF','0000000000');
INSERT INTO contract
VALUES('08/4469','4188','15-DEC-2008','14-DEC-2009');
-- Query data
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 code start dat end date
------------- -------------- --------- ---------
08/4469 4188 15-DEC-08 14-DEC-09
在您的另一个问题“支持 sql 连接语句”中,还可以查看此查询的另一个版本,列名中没有空格:)
快乐编码
HTH
【讨论】:
以上是关于支持加入表。(Oracle Apex 的新功能)的主要内容,如果未能解决你的问题,请参考以下文章