2013-06-18 2 views
0

У меня есть следующий запрос. Как я могу преобразовать следующий запрос в запрос HQL.Как я могу преобразовать следующий sql-запрос в запрос HQL

+--------+------------+-------+ 
| type | variety | price | 
+--------+------------+-------+ 
| apple | gala  | 2.79 | 
| apple | fuji  | 0.24 | 
| apple | limbertwig | 2.87 | 
| orange | valencia | 3.59 | 
| orange | navel  | 9.36 | 
| pear | bradford | 6.05 | 
| pear | bartlett | 2.14 | 
| cherry | bing  | 2.55 | 
| cherry | chelan  | 6.33 | 
+--------+------------+-------+ 

Я хочу, чтобы получить следующий результат

+--------+----------+-------+ 
| type | variety | price | 
+--------+----------+-------+ 
| apple | fuji  | 0.24 | 
| orange | valencia | 3.59 | 
| pear | bartlett | 2.14 | 
| cherry | bing  | 2.55 | 
+--------+----------+-------+ 

select f.type, f.variety, f.price 
from (
    select type, min(price) as minprice 
    from fruits group by type 
) as x inner join fruits as f on f.type = x.type and f.price = x.minprice; 

ответ

0

Я думаю, что это должно работать (не тестировался):

select f.type, f.variety, f.price 
from fruits f 
where f.price = (
    select min(f2.price) 
    from fruits f2 
    where f2.type = f.type 
) 

EDIT: Имейте в виду, что если type имеет то же price для более чем одного variety, чем все эти строки будут выбраны с помощью этого запроса ,

+0

Могу ли я написать это с помощью объединений – PSR

+0

Из документации: * Подзапросы HQL могут встречаться только в предложениях select или where * http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html /queryhql.html#queryhql-subqueries – lunr

+0

, но он дает все записи для меня. Мне нужна только самая лучшая запись – PSR

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