Oracle - отсутствует правильная скобка - PullRequest
0 голосов
/ 20 февраля 2012

Структура таблицы следующая:

ПРИМЕЧАНИЕ : Имена используются только для иллюстрации.

Таблица T1 - col1 INT, col2 CHAR, col3 VARCHAR

Таблица T2 - col1 INT, col2 VARCHAR col3 CHAR

Таблица T3 - col1 INT - col1 из Таблицы 2 col2 INT - col2 из Таблицы T col3 INT

SELECT tt1.col2, COUNT(tt1.col1) FROM T1 tt1, T2 tt2, T3 tt3 WHERE tt2.col1 = tt3.col1 AND      
tt3.col2 = tt1.col1 GROUP BY tt1.col1, tt1.col2 HAVING EVERY (tt2.col3 = 'something');

Это показывает ошибку, которая соответствует названию вопроса; Однако при удалении предложения HAVING не сообщается об ошибке.

Является ли запрос синтаксически правильным?

1 Ответ

2 голосов
/ 20 февраля 2012
SELECT tt1.col2, COUNT(tt1.col1) 
FROM T1 tt1 
JOIN T3 tt3 ON (tt3.col2 = tt1.col1)
JOIN T2 tt2 ON (tt2.col1 = tt3.col1)
WHERE tt2.col3 = 'something'
GROUP BY tt1.col2;

Не похоже, что вам нужно предложение HAVING. Вы используете предложение HAVING, когда вам нужно отфильтровать результаты после того, как ваш GROUP BY был выполнен. Например, если вы хотите, чтобы только записи с количеством (tt1.col1) превышали 10, вы бы использовали предложение HAVING. (С учетом (tt1.col1)> 10)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...