为什么解决方案不起作用并返回零记录

时间:2019-07-23 19:43:33

标签: sql oracle oracle12c

这是我的查询:

select o.order_id, p.sub_category, r.reason 
from  orders o, product p
inner join returns r
on r.order_id=o.order_id
where o.ORDER_DATE ='09/12/2016' ;

我不断收到错误消息:

ORA-OO904   "O"."ORDER_ID": invalid identifier

我不知道我在做什么错。有人可以帮我解决这个问题吗?

该列确实存在于订单表中,我不知道为什么会出现此错误,我尝试删除了where子句

tables 
customers
CUSTOMER_ID    VARCHAR2(30) NOT NULL
CUSTOMER_NAME  VARCHAR2(50) 
SEGMENT_NAME   VARCHAR2(25)

Orders
ORDER_ID              VARCHAR2(30) NOT NULL
ORDER_DATE            VARCHAR2(30) 
CUSTOMERS_CUSTOMER_ID VARCHAR2(30) NOT NULL

returns
RETURNED VARCHAR2(26)  
ORDER_ID VARCHAR2(26)  NOT NULL
REASON   VARCHAR2(128) 

我正在尝试创建一个查询,该查询返回一个集合,其中该集合包含来自3个不同表的列

1 个答案:

答案 0 :(得分:3)

不要混合使用旧式和新式联接,而只能使用new联接,这还会显示您缺少联接条件:

select o.order_id, p.sub_category, r.reason
from orders o
join product p on p.order_id = o.order_id
join returns r on r.order_id = o.order_id
where o.ORDER_DATE = '09/12/2016';

由于您尚未显示产品表或它们之间的关系,我猜测是缺少条件了。

(您不应将日期或数字作为字符串存储;为数据使用正确的数据类型... read more。)

对于原始查询,您尝试使用o.order_id将产品加入退货,但解析器尚不了解旧式的订单加入,因此会出现错误。