
elfiki
10.09.2018
13:39:10
а есть какой-нибудь инструмент, чтобы построил структуру базы диаграммкой? ну типа связи таблиц и тд и тп?

MikaelBox
10.09.2018
13:39:57
pgModeler
Но он своеобразный

Dmitry
10.09.2018
13:40:19

Google

Yaroslav
10.09.2018
13:40:27

Dmitry
10.09.2018
13:40:35

MikaelBox
10.09.2018
13:40:43
ЕМС умеет, кстати

Yaroslav
10.09.2018
13:40:45

MikaelBox
10.09.2018
13:40:51
И годно делает

Dmitry
10.09.2018
13:40:54

Yaroslav
10.09.2018
13:41:09

Dmitry
10.09.2018
13:41:35
Что "то"?
When using LIMIT, it is a good idea to use an ORDER BY clause that constrains the result rows into a unique order. Otherwise you will get an unpredictable subset of the query's rows

Yaroslav
10.09.2018
13:42:01

Vladislav
10.09.2018
13:42:07
простите, а разве оффсет/лимит работают до аггрегации?

Vadim
10.09.2018
13:42:18
ребят какой из joinov работает быстрей?

Dmitry
10.09.2018
13:42:20

Eugeny
10.09.2018
13:42:40
Во, какая жаркая дискуссия. Мне это и надо )

Google

Yaroslav
10.09.2018
13:42:50

I
10.09.2018
13:43:47
В конечном итоге OFFSET исключит единственную результирующую строку из выборки

Dmitry
10.09.2018
13:44:08

I
10.09.2018
13:44:15

Vladislav
10.09.2018
13:44:54
ааа, значит не показалось

Yaroslav
10.09.2018
13:45:36
Да ладно? Где?
Вот здесь:
Otherwise you will get an unpredictable subset of the query's rows.
Здесь есть (максимум) 1 row в результате, затем [в произвольном порядке] пропускается 2, и выводится 4.
Какой будет result set?

Dmitry
10.09.2018
13:47:11

Yaroslav
10.09.2018
13:48:42
Какая именно строка в результате?
Не имеет значения, разве нет? Возьмите, например, два объекта, расставьте их в произвольном порядке, затем отбростьте 3 и выдайте 5.
Какой будет результат?

Eugeny
10.09.2018
13:48:59

Dmitry
10.09.2018
13:49:54

elfiki
10.09.2018
13:51:03
просто интересно
можно даже парочку вариантов ответов возможных

Yaroslav
10.09.2018
13:51:33

Dmitry
10.09.2018
13:52:11

elfiki
10.09.2018
13:52:30
и

Dmitry
10.09.2018
13:52:41

elfiki
10.09.2018
13:53:01

Dmitry
10.09.2018
13:53:17
Добавить ORDER BY.

Google

elfiki
10.09.2018
13:54:08

Dmitry
10.09.2018
13:54:35
Пусть ?

elfiki
10.09.2018
13:54:55
от этого результат как-то поменяется?

Eugeny
10.09.2018
13:55:10
нет )

Yaroslav
10.09.2018
13:55:10

elfiki
10.09.2018
13:55:36
нет )
мне интересна цепочка рассуждений от молодого человека выше)
ну или это просто бот-статический анализатор кода

Eugeny
10.09.2018
14:00:57
я не бот )

elfiki
10.09.2018
14:04:52
вон там и ордер есть

Dmitry
10.09.2018
14:05:47
от этого результат как-то поменяется?
Вы, видимо не поняли. Без ORDER BY хоть пусть будет OFFSET 100500 - результат неопрелён. Не важно, сколько записей отфильтрутся. Пустое множество - это тоже множество ?

Eugeny
10.09.2018
14:05:48
ничего он не вернет, даже если отсортировать по part все равно перед обрезкой будет одна запись

Vitality
10.09.2018
14:05:58
Вернёт два поля 1 и 110
А стлп
Блядь
1 и 40
Кто вообще пишет offset до limit?

elfiki
10.09.2018
14:07:42

Vitality
10.09.2018
14:08:20
А, нет, все верно, 1 и 110

Alexey
10.09.2018
14:08:21

Google

Dmitry
10.09.2018
14:08:48

Vitality
10.09.2018
14:09:02
А разве он сначала не отберёт поля по лимиту а потом просуммирует?

Dmitry
10.09.2018
14:09:56

Vitality
10.09.2018
14:10:49
Да, точно. Я писал такие запросы. Сначала посчитает сумму, а потом уже будет брать лимиты

elfiki
10.09.2018
14:11:05

Alexey
10.09.2018
14:11:31

Dmitry
10.09.2018
14:11:33

elfiki
10.09.2018
14:11:46
нет

Dmitry
10.09.2018
14:11:59

elfiki
10.09.2018
14:12:16
или это троллинг такой?

Alexey
10.09.2018
14:12:32

Dmitry
10.09.2018
14:12:41
нет
Нет? Ну 2 + 2 = 4. Без всяких "может быть". Это детерминированный результат. Факт объективной реальности. Доказанный.

elfiki
10.09.2018
14:12:54
Но ORDER BY то нет.
вот тут ответ определен?
select part, sum(value)
from table t
where part=1
group by part
order by part
offset 2
limit 4

Dmitry
10.09.2018
14:13:49

elfiki
10.09.2018
14:13:59

Dmitry
10.09.2018
14:14:21

Yaroslav
10.09.2018
14:14:28

Dmitry
10.09.2018
14:15:37

Google

Dmitry
10.09.2018
14:15:46
Вообще, этот спор бессмысленный.

elfiki
10.09.2018
14:16:08
я так и вижу как делаю выборку по примари кею и обязательно вставляю сортировку, а то вдруг какая-то херня придет

Dmitry
10.09.2018
14:16:49

elfiki
10.09.2018
14:17:14
сразу после сортировки

Dmitry
10.09.2018
14:17:25

Yaroslav
10.09.2018
14:17:26
Вообще, этот спор бессмысленный.
Ничего подобного! И высказывание это не говорит, что в этих случаях PostgreSQL может Вам возвращать всякий бред, который с запросом никак не сзязан. Более того, ISO SQL прямо запрещает такие шутки, как мне помнится.

elfiki
10.09.2018
14:19:02

Dmitry
10.09.2018
14:21:32
Ничего подобного! И высказывание это не говорит, что в этих случаях PostgreSQL может Вам возвращать всякий бред, который с запросом никак не сзязан. Более того, ISO SQL прямо запрещает такие шутки, как мне помнится.
PostgreSQL выдаст неопрелённый результат в случае LIMIT без ORBER BY. Нет, ну если, как говорит коллега, сделать SELECT * FROM foo WHERE id = 10 LIMIT 1 OFFSET 0, то тут PostgreSQL деваться будет некуда, хотя формально, результат будет неопределён. Правда я честно не понимаю зачем его тут делать неопределённым с помощью LIMIT...

Alexey
10.09.2018
14:23:31
Хм... интересно, если в таблице test есть колонки a, b, c. И я делаю такой запрос:
selec ctid, a,b,c from test order by a, b, c offset 5 limit 10
Всегда одно одно и то же будет?

Darafei
10.09.2018
14:23:32

Dmitry
10.09.2018
14:24:08

Eugeny
10.09.2018
14:24:17

Dmitry
10.09.2018
14:24:20
Который сын ошибок всмысле )

Darafei
10.09.2018
14:24:46

Yaroslav
10.09.2018
14:24:56
Не "неопределённый результат", а результат LIMIT-а, кторый применён к rows, отсортированным в произвольном порядке.
Т.е. если у Вас, например, есть:
"... LIMIT 3;"
и без LIMIT возвращается больше трёх rows, возрат двух — это, безусловно, bug в СУБД.
И ещё раз, здесь Вам не C. ;)