|
postgreSQL Json
|
|||
---|---|---|---|
#18+
Здравствуйте, помогите с проблемой. Пытаюсь развернуть Jsonb массив в строку для сравнения с другим таким же массивом на различие элементов. characteristic_values - Json массив. cfg_group_char_attributes- исходная таблица SELECT * FROM jsonb_array_elements_text(SELECT characteristic_values FROM cfg_group_char_attributes); Postgres выдает след ошибку: ошибка синтаксиса (примерное положение: "SELECT") ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2021, 19:46 |
|
postgreSQL Json
|
|||
---|---|---|---|
#18+
pavel1307, попробуйте переписать запрос так: Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 02:42 |
|
postgreSQL Json
|
|||
---|---|---|---|
#18+
Ы2, не выходит ERROR: ОШИБКА: функция jsonb_array_elements_text(character varying) не существует LINE 559: SELECT jsonb_array_elements_text(a.b) FROM (SELECT character... ^ HINT: Функция с данными именем и типами аргументов не найдена. Возможно, вам следует добавить явные приведения типов. Возможно еще из за вида jsob, который выглядит след образом: "[{""id"": ""512b68da-b4e5-450c-832f-dc9f1f05e009"", ""name"": ""1 1/2\"", 300 lb, RF, 316/316L, Max +250°C / 480°F, all adaptors except H""}]" "[{""id"": ""017b11a8-228a-4410-b820-b31088b368ee"", ""name"": ""Стандарт (кабель PUR)""}]" "[{""id"": ""7b446092-d510-47a8-b014-850dcdfd7919""}, {""id"": ""e72a348b-a647-4869-849f-618908e70803""}]" ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 09:41 |
|
postgreSQL Json
|
|||
---|---|---|---|
#18+
pavel1307, Так функция jsonb_array_elements_text на вход jsonb требует а вы ей varchar подсовываете. Вот оно и ругается. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 10:14 |
|
postgreSQL Json
|
|||
---|---|---|---|
#18+
pavel1307 Возможно еще из за вида jsob, который выглядит след образом: "[{""id"": ""512b68da-b4e5-450c-832f-dc9f1f05e009"", ""name"": ""1 1/2\"", 300 lb, RF, 316/316L, Max +250°C / 480°F, all adaptors except H""}]" "[{""id"": ""017b11a8-228a-4410-b820-b31088b368ee"", ""name"": ""Стандарт (кабель PUR)""}]" "[{""id"": ""7b446092-d510-47a8-b014-850dcdfd7919""}, {""id"": ""e72a348b-a647-4869-849f-618908e70803""}]" какой же это "массив" ?? эта функция для такого "варианта" Код: sql 1. 2. 3. 4. 5. 6.
ходи-четай ) - https://www.postgresql.org/docs/9.5/functions-json.html ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 10:44 |
|
postgreSQL Json
|
|||
---|---|---|---|
#18+
court, это я понимаю. Но я не понимаю как мне эти данные в строку разобрать (P.S. функции для массива PosgreSQL выдают аналогичную ошибку). Мне нужно оттуда получить строку id ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 10:51 |
|
postgreSQL Json
|
|||
---|---|---|---|
#18+
pavel1307, у вас не json как тип данных и, тем более не jsonb, а простой текст (varchar), имеющий структуру json. Начните, например, с явного приведения типов (ваше_поле::jsonb), как вам база предлагает. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 11:11 |
|
postgreSQL Json
|
|||
---|---|---|---|
#18+
pavel1307 court, это я понимаю. Но я не понимаю как мне эти данные в строку разобрать (P.S. функции для массива PosgreSQL выдают аналогичную ошибку). Мне нужно оттуда получить строку id что, вообще, в "твоей вселенной", обозначает эта фраза - "данные в строку разобрать" ? что это ?? то, что ты выше привёл, это данные из 3-х строк таб.cfg_group_char_attributes или из одной ? какой тип поля characteristic_values ? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 11:19 |
|
postgreSQL Json
|
|||
---|---|---|---|
#18+
court, у меня есть одна табличка cfg_group_char_attributes, в ней поле characteristic_values - набор значений характеристик, jsonb (в котором массив объектов, каждый из которых имеет хотя бы одно свойство - id значения характеристики); Из этого поля мне нужно выбрать все id, чтобы потом получить такие же строки из 2 похожей таблицы и сравнить наличие тех или иных id в обоих табличках. Но для начала меня интересует все таки как получить все id из одной таблички ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 11:25 |
|
postgreSQL Json
|
|||
---|---|---|---|
#18+
Ы2, попробовал SELECT jsonb_array_elements_text((SELECT characteristic_values FROM cfg_group_char_attributes)::jsonb) as t; ERROR: ОШИБКА: подзапрос в выражении вернул больше одной строки Из за его вида наверное: "[{""id"": ""512b68da-b4e5-450c-832f-dc9f1f05e009"", ""name"": ""1 1/2\"", 300 lb, RF, 316/316L, Max +250°C / 480°F, all adaptors except H""}]" "[{""id"": ""017b11a8-228a-4410-b820-b31088b368ee"", ""name"": ""Стандарт (кабель PUR)""}]" "[{""id"": ""7b446092-d510-47a8-b014-850dcdfd7919""}, {""id"": ""e72a348b-a647-4869-849f-618908e70803""}]" ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 11:46 |
|
postgreSQL Json
|
|||
---|---|---|---|
#18+
pavel1307 court, у меня есть одна табличка cfg_group_char_attributes, в ней поле characteristic_values - набор значений характеристик, jsonb (в котором массив объектов, каждый из которых имеет хотя бы одно свойство - id значения характеристики); Из этого поля мне нужно выбрать все id, чтобы потом получить такие же строки из 2 похожей таблицы и сравнить наличие тех или иных id в обоих табличках. Но для начала меня интересует все таки как получить все id из одной таблички ты понимаешь, что ты не ответил ни на один из вопросов, которые я тебе задавал ? ладно, может угадаю ) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 12:18 |
|
postgreSQL Json
|
|||
---|---|---|---|
#18+
court, проще приложить файл https://github.com/pavelstruchkov1307/PostgreSQL/blob/main/task.sql ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 13:04 |
|
postgreSQL Json
|
|||
---|---|---|---|
#18+
pavel1307 court, проще приложить файл https://github.com/pavelstruchkov1307/PostgreSQL/blob/main/task.sql дык, угадал же ! :) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
меняешь cte на свою таблицу и всё вообщем так Код: sql 1. 2. 3. 4. 5. 6. 7.
id_cfg_group_char_attributesid_json569f6414-825f-4bd6-bf06-902f16152fc2512b68da-b4e5-450c-832f-dc9f1f05e009f7bf4717-76af-4451-be40-8035b6938b39017b11a8-228a-4410-b820-b31088b368eea8dbcd82-5119-411d-829a-9bab58943c27017b11a8-228a-4410-b820-b31088b368ee31e843d9-41da-498c-88d8-987a1a2f33077b446092-d510-47a8-b014-850dcdfd791931e843d9-41da-498c-88d8-987a1a2f3307e72a348b-a647-4869-849f-618908e708036b924e5d-5bb3-4a8c-ad36-3a71be37f81c7b446092-d510-47a8-b014-850dcdfd79196b924e5d-5bb3-4a8c-ad36-3a71be37f81ce72a348b-a647-4869-849f-618908e70803 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 13:41 |
|
postgreSQL Json
|
|||
---|---|---|---|
#18+
court, похоже на правду, но мне нужно получать только characteristic_values.id ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 13:52 |
|
postgreSQL Json
|
|||
---|---|---|---|
#18+
pavel1307 court, похоже на правду, но мне нужно получать только characteristic_values.id рука не поднимается "вытереть" "cte1.id as id_cfg_group_char_attributes," в запросе ? поможем ) Код: sql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 13:56 |
|
|
start [/forum/topic.php?fid=53&msg=40101613&tid=1993842]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
31ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 261ms |
total: | 385ms |
0 / 0 |