
Alex
23.03.2017
15:32:08
бывает просто контекст уводит куда то от очевидных вещей
потом снова смотришь - и всё просто было )

Alexey
23.03.2017
15:32:35
Или в where
Если в WHERE пишу, то он даже при LEFT JOIN выкидывает те, для которых не было записей в b за последний час :-/

Darafei
23.03.2017
15:33:28
А почему left join?

Google

Andrey
23.03.2017
15:33:41
Запрос-то покажите, не стесняйтесь
а то телепаты в отпуску.
сволочи.

Alexey
23.03.2017
15:35:10
SELECT a.id, COUNT(b.id) FROM a
JOIN b ON b.a_id = a.id
WHERE (b.time_stamp > NOW() - '1 hour'::INTERVAL)
GROUP BY a.id;
Having c order я не втыкал пока даже туда.

Darafei
23.03.2017
15:36:36
А min(b.time_stamp) в колонках что вернет?
А то мало ли таймзона поехала

Alexey
23.03.2017
15:39:32
А min(b.time_stamp) в колонках что вернет?
Данные в b там такие:
id | time_stamp | a_id
----+-------------------------------+------
1 | 2017-03-23 17:33:53.709287+03 | 1
2 | 2017-03-23 17:33:53.709287+03 | 1
3 | 2017-03-23 17:33:53.709287+03 | 1
4 | 2017-03-23 15:34:22.883281+03 | 2
5 | 2017-03-23 15:34:22.883281+03 | 2
6 | 2017-03-23 15:34:22.883281+03 | 1
SELECT min(time_stamp) FROM b
min
-------------------------------
2017-03-23 15:34:22.883281+03
Если ставлю просто WHERE b.timestamp > ....
То он выбирает только первые 3 записи, a_id для всех 1, поэтому тот большой запрос выводит 1, 3

Darafei
23.03.2017
15:41:55
А что не так?

Alexey
23.03.2017
15:42:24

Darafei
23.03.2017
15:44:05
А, меньше. Тогда подзапросом в колонке (select count(*) from b where b.A_ID = a. Id)
У кого какая клавиатура на телефоне для набора SQL без боли?

Igor
23.03.2017
15:48:18
Google Keyboard с минимальной задержкой для вставки спецсимволов по зажатию клавиши
но мне, слава богам, не приходится SQL или какой еще код писать на телефоне

Google

lemi
23.03.2017
15:48:38
если так прямо
select * from a where (
select count(backend_version.a_id) cnt from b where b.a_id = a.id and b.time_stamp between current_timestamp and (current_timestamp - interval '1 hour')
) < 10
order by value

Darafei
23.03.2017
15:49:55
А битвин так отработает, большее, а потом меньшее?

Alexey
23.03.2017
15:52:50

lemi
23.03.2017
15:56:39
а где здесь меньше 10

Alexey
23.03.2017
15:57:38
Это в процессе

Max
23.03.2017
16:27:26
как вариант вот так
select distinct id from
(
SELECT
a.id,
count(*) OVER (PARTITION BY a.id) AS cnt
FROM a, b
WHERE b.aid = a.id AND b.ts >= '2017-03-22 19:00:00'
)t where cnt < 10
но время я так от балды написал

Alexey
23.03.2017
16:28:53
А к результату subquery через алиас нельзя обращаться в having?

Max
23.03.2017
16:29:58
только не могу сказать насколько он оптимальный получается, первое что в голову пришло

Darafei
23.03.2017
16:34:32

Max
23.03.2017
16:48:01
а так вот идея хорошая http://sqlfiddle.com/ но не рабочая она какая-то, глючит

Darafei
23.03.2017
16:49:01
постгиса там нет :(

Max
23.03.2017
16:49:39
да нет, но хоть так ) обменивать простенькими скриптами и тестить их
глючит только как не знаю кто)
надо напилить бота телеграмм, как fiddle ))

Andrey
24.03.2017
05:34:39

Lulz
24.03.2017
06:11:18
всем привет! как в партицировании сделать запись по интервалу
само условие
а вот, вроде сделал, осталось посчитать

Google

Darafei
24.03.2017
06:57:50
суммировать что?
ты делаешь операцию над одной строкой

Dmitry
24.03.2017
07:54:47

Ildar
24.03.2017
08:07:30

Max
24.03.2017
08:21:43

Alex
24.03.2017
09:10:05
Доброго времени суток, подскажите бесплатную утилиту для конвертации таблиц oracle в postgresql со своими FK, данные не обязятельно но желательно
желательно чтоб работало на windows

Alexey
24.03.2017
09:11:37

Kirill
24.03.2017
09:11:39
Есть какая-то дичь, написанная на перле. Для простых случаев, вроде, работает

Аггей
24.03.2017
09:11:41
А кроме ora2pg вообще есть что-то?

Kirill
24.03.2017
09:12:06
Ага, она )

Alex
24.03.2017
09:12:11
вот бы в pgloader добавили возможность миграции с оракла

Dmitry
24.03.2017
09:24:25
В миграции с оракла главная боль - это хранимый код. Это не просто боль, а БОЛЬ. Если у вас бизнес-логика лежит в базе, любая тулза по миграции лишь чуть-чуть облегчит вам задачу, но не более того.

Alex
24.03.2017
09:25:49
мне только нужно таблицы перенести , что посоветуете ?
ora2pg ?

Mike Chuguniy
24.03.2017
09:26:39

Dmitry
24.03.2017
09:26:54
Я думаю, вполне.

Admin
ERROR: S client not available

lemi
24.03.2017
09:44:22
жди

Google

Dmitry
24.03.2017
09:52:41
А на сам сервер нет доступа?

Lulz
24.03.2017
10:27:11
решил не дожидаться переустановил :D

.
24.03.2017
14:02:43
Гайс, чет не получается postgresql подрубить. Вроде все по гайду делаю
https://www.digitalocean.com/community/tutorials/how-to-use-postgresql-with-your-django-application-on-ubuntu-14-04
Но при попытке запустить нужные мне процессы из Django получаю FATAL: password authentication failed for user
Приложу pg_hba
# Database administrative login by Unix domain socket
local all postgres md5
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5

lemi
24.03.2017
14:24:22
apache на том же хосте что и postgres ?
можно попробовать в settings.py
'HOST': 'localhost', поменять на 127.1
ну и проверить не помещает логин пароль правильно проставлены

.
24.03.2017
14:27:34
Только что разобрался, вообщем указывал юзера с заглавной буквы везде, щас вывел лист юзеров, понял, что с загловной ничего нет

Артур
25.03.2017
06:40:26
Всем привет. Вопрос.
Насколько правильно допускать ошибки дубликатов.
как правильнее на бэкенде:
проверять через select наличие дубликата в базе
или просто смотреть на ошибку 23505 ?

Dmitriy
25.03.2017
06:52:05

Артур
25.03.2017
06:55:25
Не не ... не.
Я о другом.
Допустим я хочу добавить пользователя с уникальным номером и создаю уникальный индекс в БД
При попытке добавить нового пользователя с тем же телефоном на бэкенде проверяю предварительно ища запись, а потом вывожу ошибку о том что пользоваель с таким телефоном есть.
Я думаю отказатья от дополнительного SELECT и хочу ориентироваться на ошибку 23505
Апдейт при этом мне не нужен.
Но насколько это правильно, осознанно нарываться на ошибку?

Алексей
25.03.2017
06:56:51
Сделайте бенчмарк и увидите, насколько это правильно в вашем конкретном случае

Max
25.03.2017
07:24:29
По мне так если пользователи не добавляются по 10000 в секунду то можно и проверить селектами
А если много ограничений уникальности, то если просто ловить ошибку то уже надо парсить ее описание чтобы выдать пользователю что не так

Айтуар
25.03.2017
07:25:54

Max
25.03.2017
07:26:21
Мы вот проверяем селектом

Айтуар
25.03.2017
07:26:51

Max
25.03.2017
07:27:05
Да и symfony формы, например, автоматом это делают, если на поле навесить соотв. ограничение
не не гигабаты )))

Айтуар
25.03.2017
07:28:08
Единственно могут быть проблемы с блокировками если в этой же таблице хранятся данные о входе, типа время последнего посещения.

Max
25.03.2017
07:34:16
хм, ды не должно быть блокировок в этом случае
выж не будете одновременно апдейтить

Google

Max
25.03.2017
07:34:46
одну и туже строку
пусть там кто-то логинится, у него меняется поле "время последнего логина", но это не должно мешать читающим и даже инсертам, поправьте меня, если я не прав
))))) ну если вы конечно не делаете select for update ))) или какой там еще блокирующий селект есть

Аггей
25.03.2017
08:33:44

Max
25.03.2017
08:34:19
поясните

Аггей
25.03.2017
08:36:15
Ну при высокой конкуренции проверка селектом без блокировки безсмысленна. А с блокировка достаточно дорога
И при высокой конкуренции ещё и опасна