Как написать запрос postgres по json данным для проверки определенных условий c - PullRequest
0 голосов
/ 27 мая 2020

Я работаю над приложением по недвижимости, которое использует базу данных postgres. Мне нужно запросить поле json для определенного условия c, и я не уверен, как это сделать.

Данные json хранятся в столбце под названием «условия». Например, у покупателя могут быть следующие условия:

{
    "subject to financing": {"date": "2020-05-30", "time": "2100", "done": true},
    "inspection": {"date": "2020-05-30", "time": "2100", "done": true},
    "be my friend": {"date": "2020-05-30", "time": "2100", "done": true}
}

Я хочу написать запрос, который проверяет выполнение всех условий. В приведенном выше случае это означает циклическое прохождение всех условий и проверку того, что их свойство "done" истинно.

Как написать такой запрос с json данными? Спасибо.

1 Ответ

1 голос
/ 27 мая 2020

Это можно сделать с условием НЕ СУЩЕСТВУЕТ.

select t.*
from the_table t
where not exists (select *
                  from jsonb_each(t.conditions) as c(k,val)
                  where (c.val -> 'done')::boolean = false)

Подзапрос выполняет итерацию по всем парам ключ / значение (каждой строки внешнего запроса) и проверяет, не установлено ли ни для одной из них значение false

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...