2016-06-24 164 views
2
select SELLS.BEER, SELLS.PRICE, SELLS.BAR 
from FREQUENTS 
where FREQUENTS.DRINKER = 'Sally' 
    and FREQUENTS.BAR IN (select SELLS.BAR from SELLS where PRICE > 5); 

以下是错误消息:甲骨文子查询错误

ORA-00904: "SELLS"."BAR": invalid identifier 
00904. 00000 - "%s: invalid identifier" 
*Cause:  
*Action: 
Error at Line: 43 Column: 33 

我已签表中的所有列,他们看起来适合我,但是我找不到。

有人可以告诉我错误在哪里吗?我正在尝试解决它,而不使用JOIN。

+0

似乎表SELLS没有列被称为 “BAR”。它可能有一个叫做“bar”或“Bar”的? –

回答

1

这可能工作:

select s.BEER, s.PRICE, s.BAR 
from FREQUENTS, SELLS s 
where FREQUENTS.DRINKER = 'Sally' AND FREQUENTS.BAR IN (select SELLS.BAR from SELLS where PRICE > 5); 

如果我得到你的逻辑,试试这个:

select s.BEER, s.PRICE, s.BAR 
from FREQUENTS, SELLS s 
where FREQUENTS.DRINKER = 'Sally' AND FREQUENTS.BAR IN (select SELLS.BAR from SELLS where s.PRICE > 5); 
+0

但没有错误,但结果看起来不正确。它显示速度减慢,价格<5和价格= 5。 –

+0

@MagdalenaDziarska检查我的更新 – Kayathiri

1

SELLS没有被连接到主查询等什么你选择是无效的。

SELECT s.BEER, s.PRICE, s.BAR 
FROM FREQUENTS f 
INNER JOIN SELLS s ON f.BAR = s.BAR 
WHERE f.DRINKER = 'Sally' 
AND f.BAR IN (SELECT sa.BAR 
       FROM SELLS sa 
       WHERE sa.PRICE > 5); 

甚至可能更简单:

SELECT s.BEER, s.PRICE, s.BAR 
FROM FREQUENTS f 
INNER JOIN SELLS s ON f.BAR = s.BAR 
WHERE f.DRINKER = 'Sally' 
AND s.PRICE > 5; 

没有连接:

SELECT s.BEER, s.PRICE, s.BAR 
FROM SELLS s 
WHERE s.BAR = (SELECT f.BAR 
       FROM FREQUENTS f 
       WHERE f.DRINKER = 'Sally') 
AND s.PRICE > 5; 
+0

嗨!我无法使用JOIN。我试图用子查询来解决它 –

+0

为什么你不能使用连接? – mathguy