172 похожих чатов

Ребят, всем привет) Ситуейшин такой: В таблице test есть jsonb колонка

body, в которой хранились данные вида: {..., "someIds": [1, 2]}
Был запрос, в котором значения someIds использовались для дальнейшего джоина:

`SELECT t.*
FROM test t,
LATERAL jsonb_array_elements((t.body) -> 'someIds') AS someIds
JOIN sometable st ON st.id IN (someIds::text::bigint)
WHERE ...`

Сейчас в body поменялась структура -
с {..., "someIds": [1, 2]}
на {..., ids:[{someId: 1, ...}, {someId: 2, ...},]}

т.е. теперь нужно вытащить айдишники для джойна из каждого объекта массива.
Может кто-то подсказать как нужно изменить запрос или в сторону каких операторов смотреть?

6 ответов

11 просмотров

jsonb_array_elements(body -> 'ids') -> 'someId'

V for Vlad- Автор вопроса
Artemiy
jsonb_array_elements(body -> 'ids') -> 'someId'

Так ругается на синтаксис(

V for Vlad
Так ругается на синтаксис(

Сорри, там символы были неправильные, я пофиксил

V for Vlad- Автор вопроса
Artemiy
Сорри, там символы были неправильные, я пофиксил

Вот при таком написании всё равно ругается на синтаксис, скорее всего, это из-за LATERAL. Пробовал делать два lateral, т.е. в первом ->'ids' as ids, а во втором ids->'someIds', и алиас второго уже подставлять в джоин, но всё равно ошибка синтаксиса(

V for Vlad
Вот при таком написании всё равно ругается на синт...

Сделайте обычный left join или lateral, но с нормальным селектом в подзапросе. У вас теперь чуть более сложный кейс, чем построчное применение функции

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта