Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Поиск в JSON поле
|
|||
|---|---|---|---|
|
#18+
есть поля с данными JSON к примеру [{"id":1000,"text":"sdafsdfsdf"}, {"id":1100,"text":"sdafsdfsdf"}] Как можно составить запрос попроще для поиска к примеру id > 100? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2016, 18:47 |
|
||
|
Поиск в JSON поле
|
|||
|---|---|---|---|
|
#18+
westvovikпопрощепопроще, чем что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2016, 20:28 |
|
||
|
Поиск в JSON поле
|
|||
|---|---|---|---|
|
#18+
p2., Чтоб поместить условие только в WHERE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2016, 12:46 |
|
||
|
Поиск в JSON поле
|
|||
|---|---|---|---|
|
#18+
westvovik, могу посоветовать расширение jsquery https://postgrespro.ru/docs/postgrespro/9.5/jsquery мощная тема-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2016, 17:31 |
|
||
|
Поиск в JSON поле
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2016, 17:56 |
|
||
|
Поиск в JSON поле
|
|||
|---|---|---|---|
|
#18+
SharuPoNemnogu Код: sql 1. 2. 3. 4. 5. а без ф-ции json_array_elements никак не обойтись? Xочется оператор который будет в WHERE проверять условие по столбцу, я почему этот вопрос и задал, но видимо только самому писать надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2016, 18:10 |
|
||
|
Поиск в JSON поле
|
|||
|---|---|---|---|
|
#18+
Legushkawestvovik, могу посоветовать расширение jsquery https://postgrespro.ru/docs/postgrespro/9.5/jsquery мощная тема-) Да тема интересная, а вы не вкурсе как на jsquery сделать такой запрос, пока разобраться не могу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2016, 19:03 |
|
||
|
Поиск в JSON поле
|
|||
|---|---|---|---|
|
#18+
westvovik, Код: sql 1. 2. 3. 4. 5. 6. я бы еще индекс GIST или GIN накатил что бы быстро работало если у вас много данных и jsquery работает с jsonb (с json не работает) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2016, 13:28 |
|
||
|
Поиск в JSON поле
|
|||
|---|---|---|---|
|
#18+
westvovikа без ф-ции json_array_elements никак не обойтись? ее вам сделали для удобства показа примера, если у вас данные хранятся в колонке типа jsonb, то json_array_elements/jsonb_array_elements не нужно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2016, 13:31 |
|
||
|
Поиск в JSON поле
|
|||
|---|---|---|---|
|
#18+
Legushkawestvovikа без ф-ции json_array_elements никак не обойтись? ее вам сделали для удобства показа примера, если у вас данные хранятся в колонке типа jsonb, то json_array_elements/jsonb_array_elements не нужно Это как не понял? Пример приведите, я чего и прошу, вот есть таблица "a" со столбцом "b" с данными '[{"id":10,"text":"1111"}, {"id":1000,"text":"2222"}]'::jsonb Как в WHERE будет условие это прописано если без ф-ции json_array_elements? Хочется конструкцию типа того SELECT * FROM (SELECT '[{"id":10,"text":"1111"}, {"id":1000,"text":"2222"}]'::jsonb as a) b WHERE (b.a->>'id')::int > 100; Но она не работает ((( jsquery тоже также только через превращения массива с помощью json_array_elements в таблицу со строками из json объектов, или можно искать с помощью оператора @@? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2016, 15:07 |
|
||
|
Поиск в JSON поле
|
|||
|---|---|---|---|
|
#18+
westvovik, если я правильно понимаю то в вашем случае в одной строке таблицы а в поле b содержится целая туча записей типа id = 1 id = 2 .. id = 1500 и тд тогда в вашем примере без функции jsonb_array_elements не обойтись-) она создает ровно столько строк сколько элементов в массиве, и так можно слелать для всех строк если же в каждой строке таблицы у вас в jsonb только {один ИД + еще энцать разных ключей, которых может и не быть}, то делаете без jsonb_array_elements. другие способы вам покажутся только длинее: переделать в аррей, вывести аррей построчно, потом опять загнать в jsonb и потом проверить вам указали функции, используйте их или изобретайте свой велосипед, никто не против) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2016, 16:40 |
|
||
|
Поиск в JSON поле
|
|||
|---|---|---|---|
|
#18+
Legushkawestvovik, если я правильно понимаю то в вашем случае в одной строке таблицы а в поле b содержится целая туча записей типа id = 1 id = 2 .. id = 1500 и тд тогда в вашем примере без функции jsonb_array_elements не обойтись-) она создает ровно столько строк сколько элементов в массиве, и так можно слелать для всех строк если же в каждой строке таблицы у вас в jsonb только {один ИД + еще энцать разных ключей, которых может и не быть}, то делаете без jsonb_array_elements. другие способы вам покажутся только длинее: переделать в аррей, вывести аррей построчно, потом опять загнать в jsonb и потом проверить вам указали функции, используйте их или изобретайте свой велосипед, никто не против) Понятно! Но может тогда кто подскажет, щас опишу вообще задачу: Мы являемся к примеру посредниками между клиентами и поставщиками, покупаем у нескольких поставщиков продаем клиенту. Есть таблицы 1. заказы клиентов 2. заказы у поставщиков таблицы связаны между собой соотвественно FK 1->2 как 1->n В итоге надо сформировать таблицу где в одной строке было бы соединены и клиент и все связанные поставщики, да и чтоб можно было бы фильтровать и сортировать по всем колонкам да и чтоб еще все это быстро работало, вот я и подумал в строну json, т.к. было бы еще и просто уже это и в интерфесе вывести может есть какие то другие варианты, а я тут велосипед и правда придумываю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2016, 17:14 |
|
||
|
Поиск в JSON поле
|
|||
|---|---|---|---|
|
#18+
westvovik, вы точно какой то велосипед изобретаете. Опишите структуру таблиц и что вы хотите в итоге получить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2016, 17:31 |
|
||
|
Поиск в JSON поле
|
|||
|---|---|---|---|
|
#18+
westvovikчтоб можно было бы фильтровать и сортировать по всем колонкам да и чтоб еще все это быстро работало ...а я тут велосипед и правда придумываю? вам вообще не нужен json на фильтре, вы джоинете данные, сразу применяете фильтры, на выходе если вам нужно в приложении уже делаете из результата json а не наоборот (делать json потом по нему фильтр) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2016, 20:58 |
|
||
|
Поиск в JSON поле
|
|||
|---|---|---|---|
|
#18+
Legushkawestvovikчтоб можно было бы фильтровать и сортировать по всем колонкам да и чтоб еще все это быстро работало ...а я тут велосипед и правда придумываю? вам вообще не нужен json на фильтре, вы джоинете данные, сразу применяете фильтры, на выходе если вам нужно в приложении уже делаете из результата json а не наоборот (делать json потом по нему фильтр) Так не получиться, т.к. я потеряю часть строк при джоине и фильтре, а мне нужно обязательно видеть всю картину, вот пример обрисую щас Таблица должна выглядеть следующим образом к примеру не суть: № договора | Фио клиента | Статус клиента | Дата создания | Полная стоимость для клиента | с клиентом № Договора с поставщиком | Назв. поставщ. | Статус поставки | Дата создания | Стоимость для нас | Вот это одна строка в таблице. К примеру у нас есть 3 поставщика на одного клиента, у них у всех разные статусы, при фильтрации по определенному статусу я не должен потерять остальных 2 поставщиков, т.е. должны вылезти все три но у кого то из них должен быть запрошенный статус и таких записей в таблице может быть много, по сути это список договоров с клиентами и наши обязанности перед клиентами Если использовать джон и фильтр то буду терять записи вместо 3х поставщиков будет клиент и один поставщик что не приемлемо т.к. не отображает всей картины. Суть по факту что тут таблица в таблице но со всеми фильтрами, вот я и думаю как это решить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2016, 18:22 |
|
||
|
Поиск в JSON поле
|
|||
|---|---|---|---|
|
#18+
westvovik, Такие задачи решают на нормальных таблицах а не на JSON. JSON для хранения слабоформализованных доков с запутанной структурой куда база внутрь (а тем более внутрь по сложной логике) не ходит. Т.е. у вас проблем в дизайне базы. -- Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2016, 17:36 |
|
||
|
Поиск в JSON поле
|
|||
|---|---|---|---|
|
#18+
Maxim Bogukwestvovik, Такие задачи решают на нормальных таблицах а не на JSON. JSON для хранения слабоформализованных доков с запутанной структурой куда база внутрь (а тем более внутрь по сложной логике) не ходит. Т.е. у вас проблем в дизайне базы. -- Maxim Boguk www.postgresql-consulting.ru Причем тут дизайн базы, вы читаете, что я описал? Дизайн базы правильный, дело в выводе сложной вложенной таблицы, мне нужно именно так выводить!!! P.S. Поэтому и спрашиваю быть может есть разумные другие варианты ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2016, 18:20 |
|
||
|
Поиск в JSON поле
|
|||
|---|---|---|---|
|
#18+
westvovikсложной вложенной таблицыТо есть, ты сначала собрал данные в json, потому что не умеешь писать джоин. Но ведь и jsonом ты не владеешь. Не проще ли было исходную постановку озвучить? Только будь любезен, все тебе будут "обязаны", приводи репрезентативные тестовые данные и какой должен получиться результат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2016, 18:41 |
|
||
|
Поиск в JSON поле
|
|||
|---|---|---|---|
|
#18+
p2.westvovikсложной вложенной таблицыТо есть, ты сначала собрал данные в json, потому что не умеешь писать джоин. Но ведь и jsonом ты не владеешь. Не проще ли было исходную постановку озвучить? Только будь любезен, все тебе будут "обязаны", приводи репрезентативные тестовые данные и какой должен получиться результат. Я не понимаю вы не читаете чтоль всю ветку? Помойму все уже расписано детально, и JSON уже не причем, это была идея всего лишь!!!!! Начнем с начало: Мы являемся к примеру посредниками между клиентами и поставщиками, покупаем у нескольких поставщиков продаем клиенту. Есть таблицы 1. заказы клиентов 2. заказы у поставщиков таблицы связаны между собой соотвественно FK 1->2 как 1->n ИТОГОВАЯ ТАБЛИЦА VIEW Таблица должна выглядеть следующим образом к примеру не суть: № договора с клиентом | Фио клиента | Статус клиента | Дата создания | Полная стоимость для клиента | № Договора с поставщиком | Назв. поставщ. | Статус поставки | Дата создания | Стоимость для нас | Вот это одна строка в таблице. К примеру у нас есть 3 поставщика на одного клиента, у них у всех разные статусы, при фильтрации по определенному статусу я не должен потерять остальных 2 поставщиков, т.е. должны вылезти все три но у кого то из них должен быть запрошенный статус и таких записей в таблице может быть много, по сути это список договоров с клиентами и наши обязанности перед клиентами Если использовать джон и фильтр то буду терять записи вместо 3х поставщиков будет клиент и один поставщик что не приемлемо т.к. не отображает всей картины. ЕСЛИ ВЫ Считаете не правильный дизайн базы у меня, тогда предложите без голословности свой вариант P.S. JOIN я пользоваться умею) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2016, 00:52 |
|
||
|
Поиск в JSON поле
|
|||
|---|---|---|---|
|
#18+
westvovik, Вас попросили привести тестовые наборы данных в 3-5-10 записей и требуемые результаты. Пока не понятно чем именно вас не устраивает JOIN. И что значит "фильтрация без фильтрации". Поиск по какому полю идет то? Вот эта фраза " у них у всех разные статусы, при фильтрации по определенному статусу я не должен потерять остальных 2 поставщиков, т.е. должны вылезти все три но у кого то из них должен быть запрошенный статус" - без тестового набора данных или нормальной формулировки вида "если - то" никому в форуме не понятна. -- Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2016, 04:44 |
|
||
|
Поиск в JSON поле
|
|||
|---|---|---|---|
|
#18+
Maxim Bogukwestvovik, Вас попросили привести тестовые наборы данных в 3-5-10 записей и требуемые результаты. Пока не понятно чем именно вас не устраивает JOIN. И что значит "фильтрация без фильтрации". Поиск по какому полю идет то? Вот эта фраза " у них у всех разные статусы, при фильтрации по определенному статусу я не должен потерять остальных 2 поставщиков, т.е. должны вылезти все три но у кого то из них должен быть запрошенный статус" - без тестового набора данных или нормальной формулировки вида "если - то" никому в форуме не понятна. -- Maxim Boguk www.postgresql-consulting.ru Вот пример прикрепил из рабочего проекта, тут суть к примеру что туроператоров несколько у клиента и если мы по ним фильтруем, вот возьмем к примеру первую строчку, там оба библиоглобуса, но вот если бы были разные и мы бы фильтровали по библиоглобусу, я не должен потерять этого второго другого, тоже самое и со статусами да и прочими столбцами, такие примеры для очевидности даю. А почему я использовать json хотел так это из за того, что проект пишем на extjs и удобно просто строить таблицу такую не форматную. Вот тут щас сделано на JSON но через велосипед там поля к примеру название туроператора заполнено след образом [{id: 1111, name:"Библиоглобус"}, {id: 2222, name:"Тез-тур"}] и причем этот столбец в базе идет как текстовый поэтому по нему я ищу просто очень. Просто пришлось триггер прикрутить который при изменениях в таблице перезаписывает поля. Так вот возможно ли улучшить данный алгоритм или нет, я поэтому и начал эту тераду тут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2016, 11:22 |
|
||
|
Поиск в JSON поле
|
|||
|---|---|---|---|
|
#18+
westvovik, Не умеете вы объяснять ну вот совсем. Я бы предположил что вы не можете придумать запрос вида: Код: plsql 1. 2. 3. 4. 5. 6. или 25 разных его вариаций с WITH или без. -- Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2016, 12:01 |
|
||
|
Поиск в JSON поле
|
|||
|---|---|---|---|
|
#18+
Maxim Bogukwestvovik, Не умеете вы объяснять ну вот совсем. Я бы предположил что вы не можете придумать запрос вида: да не, скорее они задачу клиента -- построение отчета по обычному роусету (с подавлением повторных выводов префиксов группы--что обычная опция у всяких репортов) хотят решить на стороне БД -- сшивкой джейсонов и скармливанием оных какой-нито тулзе по отрисовке уже джейсонов. наверное имеют право. но лучше бы клиентами овладевали полнее и , не побоюсь этого слова, -- глубжее, имхо. вот только почему у них задача фильтрации прорезаицца после сшивки джейсонов, когда проще было бы фильтровать до -- ума не приложу. наверное не понял чего в этом сумбуре. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2016, 13:43 |
|
||
|
|

start [/forum/topic.php?fid=53&tid=1996960]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
173ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
| others: | 12ms |
| total: | 287ms |

| 0 / 0 |
