2016-06-24 154 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