Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Named Query. Не хочет работать подзапрос


Автор: diablero 26.4.2008, 21:44
Как привести этот запрос:
Код

SELECT MAX(cnt) FROM (SELECT COUNT(*) AS cnt FROM logentry_table GROUP BY YEAR(logentry_date), DAYOFYEAR(logentry_date)) sq

К named запросу?

Так работать отказывается:
Код

@NamedQuery(
        name = "get.max.users",
        query = "SELECT MAX(cnt) as Q FROM (SELECT COUNT(*) AS cnt FROM LogEntry le GROUP BY YEAR(le.date), DAYOFYEAR(le.date)) sq")

Автор: AlexeyVorotnikov 28.4.2008, 10:20
А как не-named он выполняется?

Автор: diablero 28.4.2008, 13:04
Цитата(AlexeyVorotnikov @  28.4.2008,  10:20 Найти цитируемый пост)
А как не-named он выполняется?


Проверил, нет smile Вложенный запрос не нравиться:

Код

{java.lang.IllegalArgumentException@2875}"java.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException: 
unexpected token: ( near line 1, column 22 [SELECT MAX(cnt) FROM (SELECT COUNT(*) AS cnt FROM logentry_table GROUP BY YEAR(logentry_date), DAYOFYEAR(logentry_date)) q]"

Только в консоле мускула работает. А почему?

Автор: AlexeyVorotnikov 28.4.2008, 15:27
Вы его пытаетесь выполнять как HQL запрос?

Автор: diablero 29.4.2008, 12:24
Цитата(AlexeyVorotnikov @  28.4.2008,  15:27 Найти цитируемый пост)
Вы его пытаетесь выполнять как HQL запрос?

Нет. Теперь я хочу добиться чтобы он работал как SQL запрос, а потом уже как HQL.


Автор: AlexeyVorotnikov 29.4.2008, 14:10
SQL и HQL несколько разные языки...

Автор: diablero 29.4.2008, 22:43
Цитата(AlexeyVorotnikov @  29.4.2008,  14:10 Найти цитируемый пост)
SQL и HQL несколько разные языки...

Я выразился криво, разницу я знаю.

По теме:

Вложенный запрос прекрасно работает, есть конечно вариант забить, и найти максимум вручную. Но не хочется перекладывать работу бд на приложение да и не правильно это.



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)