
Darafei
04.02.2018
20:27:42
кстати, очень красиво в монге сделаны геоиндексы, прошивают насквозь все уровни абстракции
не дай боже захочешь чего неожиданного, всё, у тебя нет больше геоиндексов, никак

Pavel
04.02.2018
20:48:55

Darafei
04.02.2018
20:55:45
https://docs.mongodb.com/manual/geospatial-queries/

Google

Pavel
04.02.2018
21:04:43

Сергей
04.02.2018
21:13:59

Pavel
04.02.2018
21:56:56
Когда алкоголь льется рекой — это глупо. Его пить надо

Anton [Mgn, az09@osm]
05.02.2018
02:33:42
Да пусть льется! Глупо когда его пить НАДО

Mikhail
05.02.2018
05:16:26

Darafei
05.02.2018
05:17:45
а когда в реальном order by не хватало сферического геоида?

Mikhail
05.02.2018
05:22:16
Ну, если только orderby. Когда ты хранишь координаты в проецированных системах, а при переходе переводишь в базовую географическую и не WGS84 (например, чтобы выполнить какие-то расчеты), то вполне может понадобиться.

Darafei
05.02.2018
05:24:16
ну и если действительно надо не wgs84, то пилится совместимость с легаси такого уровня, что 98% геобиблиотек не подойдут
потому что ты, например, начинаешь не мочь использовать geojson, mvt и kml

Mikhail
05.02.2018
05:29:49

Alexey
05.02.2018
05:51:14


Max
05.02.2018
06:45:41
Коллеги, доброе утро. Может кто-то сталкивался и подскажет. Задача: Есть "задача", которая может состоять из подзадач, котрые в свою очередь тоже состоят из подзадач и т.д. Эта информация представлена таблицей с двумя полями: id, sub_id. Мне нужно получить все подзадачи для всех задач. Например:
исходная
id | sub_id
—---------
1 | 2
2 | 3
3 | null
4 | 5
5 | 6
6 | null
нужно получить
id | sub_id
—---------
1 | 2
1 | 3
2 | 3
4 | 5
4 | 6
5 | 6
Знаю как используя CTE сделать, но только для конкретной записи, указывая ее id в базовом селекте
WITH RECURSIVE tt AS (
SELECT id, sub_id FROM task where id = 4
UNION
SELECT t.id, t.sub_id FROM task t
INNER JOIN tt ON t.id = tt.sub_id
)
SELECT * FROM tt
а мне надо сразу для всех, чтобы потом заджойнить - выбрать все задачи, у которых завершены подзадачи

Аггей
05.02.2018
06:52:03
Насколько я вас понял - вам надо выбрать в первом select те записи id которых не встречаются в sub_id

Google

Max
05.02.2018
06:56:06
не совсем, такие я выбрать могу, мне надо чтобы в результируюшем селекте id повторялся столько раз, сколюко у него подзадач любого уровря вложенности + id подзадачи.


Yaroslav
05.02.2018
06:56:45
Коллеги, доброе утро. Может кто-то сталкивался и подскажет. Задача: Есть "задача", которая может состоять из подзадач, котрые в свою очередь тоже состоят из подзадач и т.д. Эта информация представлена таблицей с двумя полями: id, sub_id. Мне нужно получить все подзадачи для всех задач. Например:
исходная
id | sub_id
—---------
1 | 2
2 | 3
3 | null
4 | 5
5 | 6
6 | null
нужно получить
id | sub_id
—---------
1 | 2
1 | 3
2 | 3
4 | 5
4 | 6
5 | 6
Знаю как используя CTE сделать, но только для конкретной записи, указывая ее id в базовом селекте
WITH RECURSIVE tt AS (
SELECT id, sub_id FROM task where id = 4
UNION
SELECT t.id, t.sub_id FROM task t
INNER JOIN tt ON t.id = tt.sub_id
)
SELECT * FROM tt
а мне надо сразу для всех, чтобы потом заджойнить - выбрать все задачи, у которых завершены подзадачи
А почему у Вас иерархия какая-то перевёрнутая? Обычно делают (task_id, parent_task_id)...
По вопросу: если задачи —- это те записи, где sub_id —- NULL, то в первой ветке recursive UNION:
SELECT id, sub_id FROM task where id IS NULL;
И ещё, зачем у Вас там UNION, а не UNION ALL?


Max
05.02.2018
06:59:43
это я уже сам перевернул. Для простоты, мне показалось что так будет проще - это вьюха, которая джойнит таблицу саму с собой
CREATE OR REPLACE VIEW public.task AS
SELECT
m.id,
s.id as sub_id
FROM task_test m
LEFT JOIN task_test s on s.main_id = m.id

Yaroslav
05.02.2018
07:10:11
> 2) Вы наверное опечатались и хотели написать sub_id ISNULL
Нет. Предикат записывается именно так. Или о чём Вы?

Max
05.02.2018
07:11:12
SELECT id, sub_id FROM task where id IS NULL - id не может быть NULL

Yaroslav
05.02.2018
07:12:29

Max
05.02.2018
07:12:47
какую ошибку ? )))
можно и IS NULL и ISNULL
если вы об этом

Yaroslav
05.02.2018
07:16:11
если вы об этом
Да, об этом. Просто не пользуюсь нестандартным синтаксисом и забыл о нём. ;)

Max
05.02.2018
07:19:49
в общем надо получить таблицу в которой первый столбец это id задачи, а второй его подзадачи, но не обязательно первого уровня вложенности. Т.е. фактически задача состоит и из под задач своих подзадач. И надо выбрать задачи, у которых все-все подзадачи завершены
поэтому меня не устраивает передвать в CTE id задачи, котора меня инетерсует, потому что мне интересуют все, хочется одним запросом выбрать все что надо

Anton [Mgn, az09@osm]
05.02.2018
07:30:34
кажется тут нужен триггер

Yaroslav
05.02.2018
07:34:01

Max
05.02.2018
07:35:49

Yaroslav
05.02.2018
07:36:11

Max
05.02.2018
07:37:35
да, я первым делом запустил на тестовых данных, все нормально на первый взгляд.
хм, что-то похожее писал но не получил нужного результата, будем посмотреть что я не так делал
спасибо

Google

Let Eat
05.02.2018
08:16:13

Yaroslav
05.02.2018
08:17:46
Красотища. Можно вопрос? Зачем в конце еще один IS NOT NULL? Внутри же sub-id и так всегда != NULL?
Попробуйте на данных автора:
CREATE TABLE task(id int NOT NULL, sub_id int);
INSERT INTO task(id, sub_id) VALUES (1, 2), (2, 3), (3, NULL), (4, 5), (5, 6), (6, NULL);

Let Eat
05.02.2018
08:19:00
Попробуйте на данных автора:
CREATE TABLE task(id int NOT NULL, sub_id int);
INSERT INTO task(id, sub_id) VALUES (1, 2), (2, 3), (3, NULL), (4, 5), (5, 6), (6, NULL);
Пока на телефоне, попробую вечером :) спасибо

Антошин
05.02.2018
08:53:25
Добрый день!
Подскажите пожалуйста, что такое http.control, лежит по адресу /usr/pgsql-x.x/share/extension/http.control, на что влияет и к чему может привести)
данный модуль, я так понимаю отсутствует в обычной версии pg

Mike Chuguniy
05.02.2018
09:21:38
Судя по названию - для эффективного (а может и "эффективного") хранения целых веб-страниц в пг.

Антошин
05.02.2018
09:23:07
на гитхабе пишут https://github.com/pramsey/pgsql-http, но мне по описанию он доверия вообще не внушил, а наоборот.
кто в курсе, подскажите)

Ivan
05.02.2018
11:41:29

Антошин
05.02.2018
11:42:42
хотя для чего, я примерно понимаю

Ivan
05.02.2018
11:44:55
даж не знаю, может дернуть веб сервис для нотификации к событию, но как по мне бесполезное расширение

Антошин
05.02.2018
11:46:00
я так понимаю, дырок с ним много появляется?

Nick
05.02.2018
13:22:19
Подскажите, а with создает временную таблицу или это только для упрощения написания запросов и планировщик заинлайнит запрос?

Evgeniy
05.02.2018
13:22:38
не заинлайнит

Nick
05.02.2018
13:22:58
т.е. всетаки временная таблица?
и типа надо заранее думать как много данных будет в результате выборки

Evgeniy
05.02.2018
13:23:25
но и не как временная, аналайз на нее не сделать, статистику особо не собрать

Google

Nick
05.02.2018
13:24:12
короч чтоыб было хорошо нужно условие выборки постаратсья внутрь with прокидывать?

Evgeniy
05.02.2018
13:24:28
да, пушить внутрь самому

Tanu
05.02.2018
13:26:10
Привет всем!
Подскажите, как сконвертнуть дамп БД postgres 9.4 из формата sql в бинарный?

Nick
05.02.2018
13:26:42
with T (
select — по всем данным с группировкой
)
select from T where F > 4 and R < 3
чтото такое
ну и F и R это результаты сум по филдам
я понимаю что есть having
ок, спасибо
т.е. планировщик всетаки умный)