
Yaroslav
18.09.2018
10:25:31

Игорь
18.09.2018
11:33:19

Григорий
18.09.2018
11:34:01
Нет, там большинство записей нормальные, только некоторые такие

Eugen
18.09.2018
11:45:13
День добрый. А можно ли как-то присвоить alias LEFT JOINу?
FROM t1
(
LEFT JOIN .....
LEFT JOIN ....
) as join 1
(
LEFT JOIN ....
LEFT JOIN ....
) as join2
Дело в том, что в первом и втором больших JOINах имена таблиц могут пересекаться.
можно ли как-то перегруппировать эти JOINы, чтобы не парсить их и не добавлять какие-то суффиксы для уникальности?

Google

Eugen
18.09.2018
11:47:12
Вроде как: Parentheses can be used around JOIN clauses to control the join order. In the absence of parentheses, JOIN clauses nest left-to-right.
А вот что-то ругается на syntaxis error:
http://paste.scsys.co.uk/581797

Anton [Mgn, az09@osm]
18.09.2018
11:50:16

Eugen
18.09.2018
11:50:40
эт понятно, хотелось бы назначить алиас на весь JOIN

Anton [Mgn, az09@osm]
18.09.2018
11:56:11
Ну и на весь тоже. Но лучше на дубли всё же конкретизировать

Eugen
18.09.2018
11:59:49
о! похоже нашел: https://stackoverflow.com/a/43053011/4632019

Lestat -
18.09.2018
12:19:17
подскажите пожалуйста:
ставлю pg10 на CentOS7 командой с офф. сайта
далее пишу:
yum install postgresql10 postgresql10-server -y
тут всё хорошо
далее туториал предлагает мне выполнить:
/usr/pgsql-10/bin/postgres
и тут команда валится с ошибкой:
"root" execution of the PostgreSQL server is not permitted.
The server must be started under an unprivileged user ID to prevent
possible system security compromise. See the documentation for
more information on how to properly start the server.
как лечится? ( google не помог)
заранее спасибо!

Maks
18.09.2018
12:19:58
запускай из под пользователя postgres

Yaroslav
18.09.2018
12:24:51


Lestat -
18.09.2018
12:26:42
запускай из под пользователя postgres
спасибо! но теперь:
LOG: syntax error in file "/var/lib/pgsql/10/data/postgresql.conf" line 1, near token """
внутри postgresql.conf:
sten_addresses = "*"

Maks
18.09.2018
12:27:42
line 1, near token """
смотри что в первой строке у тебя не так

Lestat -
18.09.2018
12:28:35

Google

Maks
18.09.2018
12:29:12
как минимум должно быть listen_addresses
но как то мало для конфига

Lestat -
18.09.2018
12:29:56

Maks
18.09.2018
12:30:01
да

Lestat -
18.09.2018
12:30:36
да
теперь пишет что ошибка в обеих строках

Yaroslav
18.09.2018
12:31:04

Lestat -
18.09.2018
12:32:12

Yaroslav
18.09.2018
12:33:46
такой был при установке postgres
C:
> sten_addresses = "*"
Да это какой-то бред, в самом деле. :(
Просто не верится... может быть, у Вас в самом деле "битое" железо (диск), ну или пакеты, из которых Вы ставили (хотя там д/б CRC)?

Lestat -
18.09.2018
12:35:21
(хотя там д/б CRC)?
не знаю что это, по поводу железа: новый сервак, виртуалка centOS7 (хожу по ssh)
есть рабочий мануал установки postgres10 под рукой у кого-нибудь ?
извиняюсь за нубячьи вопросы (впервые работаю с pg)

Айтуар
18.09.2018
12:39:23
У меня были проблемы с новым железом. Там прошивка в раид контроллере старая стояла.

Yaroslav
18.09.2018
12:40:19
> не знаю что это
Это контрольные суммы, которые, по идее, должны предотвратить установку "битых" пакетов в систему.
> есть рабочий мануал установки postgres10 под рукой у кого-нибудь ?
Я же Вам пишу, попробуйте посмотреть в дистрибутиве.
> извиняюсь за нубячьи вопросы (впервые работаю с pg)
Ничего страшного, просто то, что у Вас происходит, мягко говоря, необычно (поэтому я и подумал о битом железе).

Lestat -
18.09.2018
12:47:16

Yaroslav
18.09.2018
12:50:58
могу попросить пример postgresql.conf ?
Вы уже пробовали документацию дистрибутива почитать?
(Понимаете, если у Вас действительно что-то битое, PostgreSQL просто "грохнется", независимо от config-а... и это ещё в лучшем случае).
Т.е. разберитесь, что происходит, сначала.

Lestat -
18.09.2018
12:51:14
хорошо, спасибо

S
18.09.2018
12:53:49

Anton [Mgn, az09@osm]
18.09.2018
12:54:14

Кондр
18.09.2018
13:02:50
Есть в постгрес возможность объеденить результат запроса в строку с разделителем?

Google

Сергей
18.09.2018
13:04:44
одну строку вернуть? ну приведите все поля к строке, сконкатенируйте и верните строку

Ilia
18.09.2018
13:05:22

Кондр
18.09.2018
13:06:48

Сергей
18.09.2018
13:08:39
concat_ws(sep text, str "any" [, str "any" [, ...] ]) text Concatenate all but first arguments with separators. The first parameter is used as a separator. NULL arguments are ignored. concat_ws(',', 'abcde', 2, NULL, 22) abcde,2,22
https://www.postgresql.org/docs/9.1/static/functions-string.html

Eugen
18.09.2018
13:12:22

Кондр
18.09.2018
13:13:05
concat_ws(sep text, str "any" [, str "any" [, ...] ]) text Concatenate all but first arguments with separators. The first parameter is used as a separator. NULL arguments are ignored. concat_ws(',', 'abcde', 2, NULL, 22) abcde,2,22
https://www.postgresql.org/docs/9.1/static/functions-string.html
Не. Вот такое нужно
http://firebirdsql.su/doku.php?id=list

Yaroslav
18.09.2018
13:13:28

Eugen
18.09.2018
13:14:08
Там в ней определяетс набор данных. Поэтом этот набор можно как подзапросом, а можно с другим JOIN. Использовать можно несколько раз.
Вот поэтому и хочется на этот весь набор (запрос) назначить алиас средствами Postgres, а не возиться с каждой таблицей, с каждым полем....

Сергей
18.09.2018
13:14:31
почитайте про orm

Yaroslav
18.09.2018
13:14:48

Кондр
18.09.2018
13:16:31

Eugen
18.09.2018
13:22:20
вот научился правильно расставлять скобочки.
PG показывает даже план одинаковый
http://paste.scsys.co.uk/581799
и вот он алиас на весь JOIN:
left join (users_roles ur left join roles r on r.id = ur.role_id ) as urr on urr.user_id = u.id;

Yaroslav
18.09.2018
13:24:59

Eugen
18.09.2018
13:26:06
аа, так мне промежуточные не нужны, то что их нет, как раз и хорошо.

Google

Eugen
18.09.2018
13:27:19
хотя да я понял о чём вы.

Yaroslav
18.09.2018
13:28:35

Eugen
18.09.2018
13:29:30
навернео это должно было разрулиться, когда составляется имена для колонок:
( ......... ) as tablealias( ur.*, r.* )
или более конкретно:
( ......... ) as tablealias( r.id as id, ur.id as urid )

Andrei
18.09.2018
13:31:33
Какая-то ерунда, ИМХО Ярослав прав

Eugen
18.09.2018
13:32:11
Кстати, нашел решение
select * from users u
left join (select * from users_roles ur left join roles r on r.id = ur.role_id ) as urr on urr.user_id = u.id;
Делать subselect,
explain показывает тот же план

Andrei
18.09.2018
13:33:32
а почему лефт джойны?
юзер_роли могут быть без ролей?
аналогично, юзеры
)))

Yaroslav
18.09.2018
13:34:25
explain показывает тот же план
Да причём тут план? ;)
Вы вот возьмите две разные таблицы, пусть в каждой есть поле "name", и сошлитесь на одно из них "снаружи" join alias.
> Делать subselect,
Ну а это уже не join alias. ;)

Eugen
18.09.2018
13:35:48
>Ну а это уже не join alias. ;)
а выглядет один в один. Разве что select * from опущено для читабельности
select * from users u
left join (select * from users_roles ur left join roles r on r.id = ur.role_id ) as urr on urr.user_id = u.id;
select * from users u
left join ( users_roles ur left join roles r on r.id = ur.role_id ) as urr on urr.user_id = u.id;

Terminator
18.09.2018
13:36:56
@i_scarface будет жить. Поприветствуем!

Eugen
18.09.2018
13:37:32
радует меня сегодняшние бызы. Лет 15 назад на такое бы слюнки аж текли )

Nikita
18.09.2018
13:37:34

Yaroslav
18.09.2018
13:40:34

Google

Eugen
18.09.2018
13:41:05

Yaroslav
18.09.2018
13:42:47
Т.е., грубо говоря, non-ACID, "AP" из CAP?
Посмотрите, наверное... citus, или какие-нибудь burcardo... (не уверен, впрочем, может быть, кто-то ещё подскажет).

Eugen
18.09.2018
13:44:26
извините, не силён пока в терминологии

Mike Chuguniy
18.09.2018
13:45:01
У нас есть ВСЁ! Кроме совести и денеХ. :) Выбирайте, какой желаете: https://wiki.postgresql.org/wiki/Replication,_Clustering,_and_Connection_Pooling

Eugen
18.09.2018
13:45:07
главное то, что запросы эквивалентные получились

Andrei
18.09.2018
13:45:10

Mike Chuguniy
18.09.2018
13:45:17
Хых. И мучайтесь.

Eugen
18.09.2018
13:48:49

Mike Chuguniy
18.09.2018
13:51:43
Сказано же - мучайтесь. Мне хватает понимания, что такое РСУБД и описаний попыток построить мультимастер, чтобы всерьёз не рассматривать подобные непотребства. Причём независимо от конкретной РСУБД.

Yaroslav
18.09.2018
13:51:47

Eugen
18.09.2018
13:53:14
я не против. Главное задача решена.

Yaroslav
18.09.2018
14:08:11

Eugen
18.09.2018
14:10:21
ERROR: table name "ur" specified more than once