|
|
|
select со сложным условием.
|
|||
|---|---|---|---|
|
#18+
Всем привет. Помогите плиз со сложным запросом к pgsql. Есть одна таблица, в ней текстовое id объекта и время time типа integer. Что бы мне достать последнее сообщение по объекту я делаю: SELECT MAX(time) FROM table WHERE id = '1111'; Это хорошо работает. Но, у меня много объектов и для каждого из них делается запрос к базе, все это долго. Как мне сделать одним запросом все эти обращения. Что-то вроде SELECT MAX(time) FROM table WHERE id IN ('111','2222'); Вся сложность в том, что этот запрос мне вернет одно сообщение с максимальным временем из всех объектов. А мне надо что бы оно для 30 объектов вернуло для каждого из них по сообщению с максимальным временем именно для этого объекта. Что-то вроде SELECT MAX(time[id]) FROM table WHERE id IN ('111','2222'); Может кто сталкивался с пободной задачей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2014, 14:08:06 |
|
||
|
select со сложным условием.
|
|||
|---|---|---|---|
|
#18+
sksystem, Код: plsql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2014, 14:15:13 |
|
||
|
select со сложным условием.
|
|||
|---|---|---|---|
|
#18+
Павел Лузанов, То что надо, спасибо, в понедельник попробую) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2014, 14:20:04 |
|
||
|
select со сложным условием.
|
|||
|---|---|---|---|
|
#18+
Попробовал сегодня выполнить запрос, в принципе он выполняется тот который надо, но есть нюанс: мне надо вытянуть не только эти два столбца, а ещё и все другие столбцйы в таблице. И вот тут ступор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2014, 12:39:49 |
|
||
|
select со сложным условием.
|
|||
|---|---|---|---|
|
#18+
Кажись нашел: select * from storage0 where (unit_id, time) in (SELECT unit_id, max(time) from storage0 WHERE unit_id IN ('75726','81295') group by unit_id); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2014, 12:46:24 |
|
||
|
select со сложным условием.
|
|||
|---|---|---|---|
|
#18+
sksystemКажись нашел:нет, не нашли. в запрос Павла Лазунова добавляете список всех необходимых полей и их же включаете в условие group by но для начала почитайте это и это ну и вообще ознакомиться с документацией не помешает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2014, 13:17:21 |
|
||
|
select со сложным условием.
|
|||
|---|---|---|---|
|
#18+
roadster, Вы имеете виду вот так: SELECT unit_id, MAX(id), MAX(time) FROM storage0 WHERE unit_id IN ('75726','81295') GROUP BY unit_id,id; ? Продобавал так, выдает все сообщения, а не по одному объекту с максимальным временем. В моей варианте выдает верный мне результат. Если найдете минутку, буду признателен если более подробно разясните. По документации я из неё не вылажу, смотрю постоянно, за линки благодарю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2014, 13:38:49 |
|
||
|
select со сложным условием.
|
|||
|---|---|---|---|
|
#18+
Ой, ошибся не так: SELECT unit_id, MAX(id), MAX(time) FROM storage0 WHERE unit_id IN ('75726','81295') GROUP BY unit_id,id; а вот так SELECT unit_id, id, MAX(time) FROM storage0 WHERE unit_id IN ('75726','81295') GROUP BY unit_id,id; хотя пробовал и так и так Сразу скажу что в MySQL Ваш вариант отрабатывает, а в PgSql почему-то нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2014, 13:40:14 |
|
||
|
select со сложным условием.
|
|||
|---|---|---|---|
|
#18+
Если это PostgreSQL, то удобно использовать расширение DISTINCT ON : Код: sql 1. 2. 3. 4. Основное требование: колонки указанные в `DISTINCT ON` конструкции должны быть первыми в `ORDER BY`. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2014, 14:26:51 |
|
||
|
select со сложным условием.
|
|||
|---|---|---|---|
|
#18+
vyegorovЕсли это PostgreSQL, то удобно использовать расширение DISTINCT ON : Код: sql 1. 2. 3. 4. Основное требование: колонки указанные в `DISTINCT ON` конструкции должны быть первыми в `ORDER BY`. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2014, 16:18:03 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=124&tid=1998534]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
79ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 398ms |

| 0 / 0 |
