Вопрос по HQL
От: strcpy Россия  
Дата: 21.03.07 11:42
Оценка:
В hibernate есть язык запросов HQL.

Вопрос: можно ли в HQL сделать INNER JOIN двух различных SELECT-ов?

Спасибо.
Удвой число ошибок, если не получается добиться цели.
Re: Вопрос по HQL
От: C0s Россия  
Дата: 21.03.07 11:51
Оценка:
Здравствуйте, strcpy, Вы писали:

S>В hibernate есть язык запросов HQL.

S>Вопрос: можно ли в HQL сделать INNER JOIN двух различных SELECT-ов?

вопрос выглядит некорректно (джойнятся отношения, т.е. таблицы/вьюхи, а не селекты)
можешь написать, как ты представляешь то, что ты хочешь сделать, в терминах SQL?
Re[2]: Вопрос по HQL
От: strcpy Россия  
Дата: 21.03.07 12:09
Оценка:
C0s>можешь написать, как ты представляешь то, что ты хочешь сделать, в терминах SQL?

Да. Чуть позже.
Удвой число ошибок, если не получается добиться цели.
Re[2]: Вопрос по HQL
От: toxin Россия  
Дата: 22.03.07 07:47
Оценка:
Здравствуйте, C0s, Вы писали:

S>>В hibernate есть язык запросов HQL.

S>>Вопрос: можно ли в HQL сделать INNER JOIN двух различных SELECT-ов?

C0s>вопрос выглядит некорректно (джойнятся отношения, т.е. таблицы/вьюхи, а не селекты)

C0s>можешь написать, как ты представляешь то, что ты хочешь сделать, в терминах SQL?

А чем SELECT принципиально отличается от вьюхи?
select * from (select id1, field1) a
  inner join (select id2,field2 from table2) b on a.id1 = b.id2

Правда в контексте гибера такая конструкция выглядит странно.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Вопрос по HQL
От: strcpy Россия  
Дата: 23.03.07 06:16
Оценка:
Как и обещал, объясняю что мне нужно. Всё упростил до нЕльзя:

Есть таблица с полями: Department, Name, Age. Как получить список самых старых сотрудников по отделению с возрастами. То есть вычеркнуть из таблицы всех тех, для кого в данном подразделении есть более старый человек. Как такое сделать на HQL причём эффективно, так как таблица очень большая?

Спасибо.
Удвой число ошибок, если не получается добиться цели.
Re[2]: Вопрос по HQL
От: C0s Россия  
Дата: 23.03.07 13:55
Оценка:
Здравствуйте, strcpy, Вы писали:

S>Есть таблица с полями: Department, Name, Age. Как получить список самых старых сотрудников по отделению с возрастами. То есть вычеркнуть из таблицы всех тех, для кого в данном подразделении есть более старый человек. Как такое сделать на HQL причём эффективно, так как таблица очень большая?


если запрос случается редко, то цель сделать его эффективно — сомнительна. т.е. можно не как эффективнее, а как проще

а если этот запрос надо делать постоянно, то решается редизайном (в одной таблице — департаменты с избыточными полями, в частности возрастом самого старшего сотрудника, в другой — собственно сотрудники)
Re[2]: Вопрос по HQL
От: elmal  
Дата: 23.03.07 14:10
Оценка:
Здравствуйте, strcpy, Вы писали:

S>Как и обещал, объясняю что мне нужно. Всё упростил до нЕльзя:


S>Есть таблица с полями: Department, Name, Age. Как получить список самых старых сотрудников по отделению с возрастами. То есть вычеркнуть из таблицы всех тех, для кого в данном подразделении есть более старый человек. Как такое сделать на HQL причём эффективно, так как таблица очень большая?

А что-то подобное не пройдет?
      select Department, Name, Age
      from table
      group by Department, Name
      order by age desc
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.