2016-06-24 2 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); 

Вот сообщение об ошибке:Oracle Sub Ошибка запроса

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

Я проверил все столбцы в таблице, и они выглядят для меня, однако я не смог найти.

Может кто-нибудь сказать мне, где ошибка? Я пытаюсь решить его, не используя JOIN.

+0

кажется, что таблица SELLS не имеет столбец под названием "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 и Price = 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

Hi! Я не могу использовать JOIN. Я пытаюсь решить его с помощью подзапроса –

+0

Почему вы не можете использовать соединение? – mathguy

Смежные вопросы