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 ответов

9 просмотров

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, но с нормальным селектом в подзапросе. У вас теперь чуть более сложный кейс, чем построчное применение функции

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

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

function LoadMemoryFromInet2( f:TMemoryStream; const url:string; var e:string ):Boolean; var http:TIdHttp; LHandler: TIdSSLIOHandlerSocketOpenSSL;begin Result := fals...
Александр Смоляков
1
Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Я вот подумал. SSE выполняет операции максимум с 64-битной точностью. А FPU - всегда с 80-битной. Разве не должно быть FPU точнее тогда?
The Bird of Hermes
13
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
как быть с принтером? такой подход прокатит?
zamtmn
12
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
This is a big issue. Just by being a citizen of a country, you are denied to contribute to Open Source software: https://youtu.be/L5Ec5jrpLVk?si=1iIuHnMPbCB4anV-
Sharuzzaman Ahmat Raslan
72
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
Карта сайта