Size: a a a

pgsql – PostgreSQL

2020 July 07

АК

Андрей Казанцев... in pgsql – PostgreSQL
Есть запрос с параметром where user_id = {user_id}. Как написать запрос который для каждого user выполнит его?
источник

РЖ

Роман Жарков... in pgsql – PostgreSQL
select ( select something from somewhere where user_id = users.user_id limit 1)
from users;
источник

DM

Dmitriy Momotyuk in pgsql – PostgreSQL
Андрей Казанцев
Есть запрос с параметром where user_id = {user_id}. Как написать запрос который для каждого user выполнит его?
user_id in (?,?,?)
источник

АК

Андрей Казанцев... in pgsql – PostgreSQL
Dmitriy Momotyuk
user_id in (?,?,?)
Не, там elft join
источник

DM

Dmitriy Momotyuk in pgsql – PostgreSQL
Андрей Казанцев
Не, там elft join
и что
источник

АК

Андрей Казанцев... in pgsql – PostgreSQL
Тогда находит с чем поджонить. Просто нужно проверить собрал ли пользователь все колетеблсы. Если да то победил. Запрос на проверку выглядит как left join и если есть null то не выиграл
источник

АК

Андрей Казанцев... in pgsql – PostgreSQL
Мне нужно теперь найти всех победителей
источник

КТ

Кайржан Турмагамбето... in pgsql – PostgreSQL
всем привет, индекс с GIN будет работать для точного соответствия
where phone='1234567890' ?
источник

DM

Dmitriy Momotyuk in pgsql – PostgreSQL
Андрей Казанцев
Тогда находит с чем поджонить. Просто нужно проверить собрал ли пользователь все колетеблсы. Если да то победил. Запрос на проверку выглядит как left join и если есть null то не выиграл
а какое отношение к этому имеет существующий запрос, если задача новая?
источник

DM

Dmitriy Momotyuk in pgsql – PostgreSQL
у меня есть запрос, мне нужен другой запрос, скажите как мне его изменить первый чтобы получить второй
источник

АК

Андрей Казанцев... in pgsql – PostgreSQL
select collectible_id, token as user_token, user_id, count as taked_count
                     from collectibles_collectible
                              left join (
                         select *
                         from accounts_tokenbesideuser
                                  join collectibles_takencollectible
                                       on accounts_tokenbesideuser.id = collectibles_takencollectible.user_id
                         where user_id = users.user_id
                     ) as foo on foo.collectible_id = collectibles_collectible.id
источник

АК

Андрей Казанцев... in pgsql – PostgreSQL
Вот запрос. Если есть user_id = null то мы проиграли
источник

АК

Андрей Казанцев... in pgsql – PostgreSQL
таблицы всего 3. Первая это collectibles_collectible. В ней лежать сами колектеблсы. Вторая это accounts_tokenbesideuser где лежат пользователи и третья collectibles_takencollectible. Это таблица со связями.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Кайржан Турмагамбетов
всем привет, индекс с GIN будет работать для точного соответствия
where phone='1234567890' ?
Вообще, да... но зачем Вам? ;)
источник

КТ

Кайржан Турмагамбето... in pgsql – PostgreSQL
Yaroslav Schekin
Вообще, да... но зачем Вам? ;)
В целях оптимизации. Сравнил с like План запроса изменился
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Андрей Казанцев
Есть запрос с параметром where user_id = {user_id}. Как написать запрос который для каждого user выполнит его?
Обычно это делается JOIN-ом. Но лучше бы показать \d каждой таблицы, чем описывать их.
И описать задачу (это просто "найти всех победителей"?), и всё это лучше в одном месте. ;)
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Кайржан Турмагамбетов
В целях оптимизации. Сравнил с like План запроса изменился
Оптимизации чего (каких запросов)? Какой там тип индексируемого поля, что за индекс и т.п.?
источник

АК

Андрей Казанцев... in pgsql – PostgreSQL
А как проверить что какойто запрос содержит null?
источник

АК

Андрей Казанцев... in pgsql – PostgreSQL
мне для case when
источник

АК

Андрей Казанцев... in pgsql – PostgreSQL
select * from
(select(
          select case
                     when 0 < (select count(*)
                               from (
                                        select user_id
                                        from collectibles_collectible
                                                 left join (
                                            select *
                                            from accounts_tokenbesideuser
                                                     join collectibles_takencollectible
                                                          on accounts_tokenbesideuser.id = collectibles_takencollectible.user_id
                                            where user_id = users.user_id
                                        ) as foo on foo.collectible_id = collectibles_collectible.id
                                        where user_id is null
                                    ) as ccfui) then false
                     else true end
      ) as is_win,
      user_id
from (
         select distinct (user_id) as user_id
         from collectibles_takencollectible
     ) as users
)
as main where is_win = true;
источник