|
|
|
Сложный Hibernate запрос
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Както затруднительно сделать следующий запрос. Есть таблица в которой хранятся параметры здоровья пациента. В ней есть поле тип , значение , дата . (и id ) Нужно выбрать по одной строке на тип с самой последней датой. Т.е. все последние показатели здоровья. Вот такой код имею для начала Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Но как сделать чтобы от каждого типа? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2012, 22:40:38 |
|
||
|
Сложный Hibernate запрос
|
|||
|---|---|---|---|
|
#18+
group by тип? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2012, 23:17:52 |
|
||
|
Сложный Hibernate запрос
|
|||
|---|---|---|---|
|
#18+
Ну чтобы ещё были все по одному с наибольшими датами в своей группе (по типу) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2012, 00:09:59 |
|
||
|
Сложный Hibernate запрос
|
|||
|---|---|---|---|
|
#18+
Я на простом SQL тоже как затрудняюсь сказать как это сделать. Ведь нужно не только сделать сделать по одному от группы но и ещё сделать чтобы от группы брался с наибольшей датой... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2012, 00:11:59 |
|
||
|
Сложный Hibernate запрос
|
|||
|---|---|---|---|
|
#18+
А если изменить саму таблицу? Есть возможноть? Ну то есть либо добавить дополнительную связанную с ней. Для того, чтобы не мучится со сложными запросами через hql. Я вообще когда подобного рода вещи возникают, то изменяю клиентскую сторону и добавляю или меняю таблички, благо возможность присутствует. А вот у знакомых трогать базу категорически запрещено, вот они там под mssql портянки запросов строчат дай боже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2012, 12:04:01 |
|
||
|
Сложный Hibernate запрос
|
|||
|---|---|---|---|
|
#18+
ccoderЯ на простом SQL тоже как затрудняюсь сказать как это сделать. как-то так Код: sql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2012, 13:07:21 |
|
||
|
Сложный Hibernate запрос
|
|||
|---|---|---|---|
|
#18+
забыл никgroup by тип? Делаю Код: sql 1. получаю авторORA-00936: missing expression 00936. 00000 - "missing expression" *Cause: *Action: Error at Line: 1 Column: 22 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2012, 23:36:05 |
|
||
|
Сложный Hibernate запрос
|
|||
|---|---|---|---|
|
#18+
chpashaccoderЯ на простом SQL тоже как затрудняюсь сказать как это сделать. как-то так Код: sql 1. 2. 3. 4. 5. 6. Делаю Код: sql 1. 2. 3. 4. 5. 6. получаю авторORA-01747: invalid user.table.column, table.column, or column specification 01747. 00000 - "invalid user.table.column, table.column, or column specification" *Cause: *Action: Error at Line: 5 Column: 9 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2012, 23:36:40 |
|
||
|
Сложный Hibernate запрос
|
|||
|---|---|---|---|
|
#18+
Таблица Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2012, 23:39:01 |
|
||
|
Сложный Hibernate запрос
|
|||
|---|---|---|---|
|
#18+
Делаю Код: sql 1. 2. 3. 4. 5. 6. получаю автор6 weight 87,1 2012.04.01 12:00:00,000000000 1 5 weight 87,1 2012.04.01 12:00:00,000000000 0 3 DBP 80 2012.03.31 00:00:00,000000000 0 1 height 186 2012.03.31 00:00:00,000000000 0 2 SBP 120 2012.03.31 00:00:00,000000000 0 т.е. не отсеянный ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2012, 00:19:49 |
|
||
|
Сложный Hibernate запрос
|
|||
|---|---|---|---|
|
#18+
Делаю Код: sql 1. получаю авторORA-00979: not a GROUP BY expression 00979. 00000 - "not a GROUP BY expression" *Cause: *Action: Error at Line: 1 Column: 7 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2012, 00:20:38 |
|
||
|
Сложный Hibernate запрос
|
|||
|---|---|---|---|
|
#18+
On 01.04.2012 01:20, ccoder wrote: > получаю > ORA-00979: not a GROUP BY expression Если есть возможность сделать именно SQL-запросом к Oracle, то посмотри в сторону аналитических функций, типа row_number(). И, конечно, обзывать поле зарезервированным именем TIMESTAMP на мой взгляд плохая идея. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2012, 00:37:59 |
|
||
|
Сложный Hibernate запрос
|
|||
|---|---|---|---|
|
#18+
А в hibernate насчет этого ничего не предусмотрено? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2012, 00:42:41 |
|
||
|
Сложный Hibernate запрос
|
|||
|---|---|---|---|
|
#18+
Пробую Код: sql 1. 2. 3. 4. получаю авторORA-00979: not a GROUP BY expression 00979. 00000 - "not a GROUP BY expression" *Cause: *Action: Error at Line: 4 Column: 7 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2012, 00:46:58 |
|
||
|
Сложный Hibernate запрос
|
|||
|---|---|---|---|
|
#18+
Пробую Код: sql 1. 2. 3. 4. 5. 6. 7. 8. получаю авторORA-00905: missing keyword 00905. 00000 - "missing keyword" *Cause: *Action: Error at Line: 6 Column: 15 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2012, 00:53:35 |
|
||
|
Сложный Hibernate запрос
|
|||
|---|---|---|---|
|
#18+
Странно, но так Код: sql 1. 2. 3. 4. 5. 6. получаю авторID TYPE MostRecentServiceMonth -- -------------------- ------------------------------ 0 weight 2012.03.31 10:00:00,000000000 1 height 2012.03.31 00:00:00,000000000 6 weight 2012.04.01 12:00:00,000000000 4 weight 2012.03.31 20:00:00,000000000 3 DBP 2012.03.31 00:00:00,000000000 2 SBP 2012.03.31 00:00:00,000000000 5 weight 2012.04.01 12:00:00,000000000 7 rows selected ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2012, 00:57:28 |
|
||
|
Сложный Hibernate запрос
|
|||
|---|---|---|---|
|
#18+
Можно попробовать на HQL: Код: plsql 1. Но логично предположить, что чем больше timestamp, тем больше id. Поэтому можно оптимизировать запрос, заменив timestamp на id. Но это только в случае, если нет записей "задним числом". P.S. Рекордов с ID=0 не должно существовать. Нумерация начинается с 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2012, 01:29:09 |
|
||
|
Сложный Hibernate запрос
|
|||
|---|---|---|---|
|
#18+
IDVsbruckP.S. Рекордов с ID=0 не должно существовать. Нумерация начинается с 1. Я чтото незнал про это ничего. Можно ещё несколько слов, откуда это? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2012, 01:32:29 |
|
||
|
Сложный Hibernate запрос
|
|||
|---|---|---|---|
|
#18+
И пробую сделать на SQL Код: sql 1. 2. получаю авторORA-00920: invalid relational operator 00920. 00000 - "invalid relational operator" *Cause: *Action: Error at Line: 2 Column: 11 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2012, 01:35:03 |
|
||
|
Сложный Hibernate запрос
|
|||
|---|---|---|---|
|
#18+
Вот такой вышел код Код: sql 1. 2. 3. 4. 5. 6. 7. 8. Теперь вопрос - как это дело лучше оформить на HQL или ещё бы лучше с Criteria? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2012, 02:07:12 |
|
||
|
Сложный Hibernate запрос
|
|||
|---|---|---|---|
|
#18+
ccoderIDVsbruckP.S. Рекордов с ID=0 не должно существовать. Нумерация начинается с 1. Я чтото незнал про это ничего. Можно ещё несколько слов, откуда это? Банальное наблюдение. Работая с клиентом на флексе, когда на клиенте создается новый объект, передается на сервер, сериализуется и я хочу записать его в базу, то вижу, что тот же клиент не передает null в поле id, там стоит 0. Соответственно, имей я рекорд с id=0, все новые записывались поверх него. Но хибер записывает строку в конец таблицы. Соответственно делаю вывод, что я не должен делать рекорд с id=0. Второе наблюдение касалось работы с DWR- та же ситуация. Третье - если я создаю новую таблицу и записываю первый рекорд, то у него первый рекорд имеет id=1. С чего бы это? Любые коллекции имеют первый порядковый номер 0, а тут 1. Подтверждения своим словам я не нахожу, поэтому не могу настаивать на своей точке зрения. Что касается приведенного кода, то я его не тут писал, а тестировал на реальной базе. И у меня работало. Только таблица другая: id совпадает, вместо patientid у меня orderid, timestamp остался, вместо type у меня statusid, значение можно брать любое поле. Для определенного ордера (всего для него было 27 рекордов, 3 разных статуса и разные таймстампы) мой запрос выдал 3 рекорда (по количеству статусов), у которых максимальные таймстампы в своих группах по статусам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2012, 14:21:50 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37732735&tid=2132161]: |
0ms |
get settings: |
13ms |
get forum list: |
22ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
17ms |
get forum data: |
2ms |
get page messages: |
92ms |
get tp. blocked users: |
2ms |
| others: | 349ms |
| total: | 544ms |

| 0 / 0 |
