@Zhazira_N

Какую команду следует использовать для поиска строк, содержащих значение больше определенного числа?

Помогите, как получить из базы данных все данные, в которых stat «5»: «1.5» и stat „1“: больше, чем число, полученное запросом. Например, я получаю запросом число 100 и мне нужно получить stat «1»: больше 100. Спасибо.
66d5422854cce596274776.png
Моя попытка запроса:
SELECT * from cst WHERE prom='77-4391' AND  stat LIKE '%5":"1.5%'

66d54278017ed053235543.png

Какой результат я хочу получить:
66d5426f34a53786450623.png
  • Вопрос задан
  • 92 просмотра
Пригласить эксперта
Ответы на вопрос 1
@alexalexes
1) Создать таблицу cst_stat.
id
cst_id -- внешний ключ к cst
p_key -- значение ключа в JSON
p_value -- значение по ключу в JSON
2) Создать скрипт, который вычитает данные из таблицы, сдекодит JSON и запишет в cst_stat распарсенный JSON.
3) Создать уже привычный запрос с использованием таблиц cst и cst_stat.
select *
from cst

where exists( select *
                           from cst_stat
                               where cst.id = cst_stat.cst_id
                               and cst_stat.p_key = 5 and cst_stat.p_value = 1.5
) -- вариант поиска в JSON значения 5: 1.5

4) Переписать систему сбора статистики, чтобы записывался данные в нормализованном виде, без JSON.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы