Форумы портала PHP.SU » PHP » SQL и Архитектура БД » поиск внутри json_data на sql

Страниц (1): [1]
 

1. Соц Сеть - 11 Июля, 2018 - 10:49:55 - перейти к сообщению
Добрый день друзья , подскажите пожалуйста есть ли способ выполнять поиск по json дате в sql ?
есть таблица json_data в нем поля id и data
[{"period":"2016-2018","lesson":"english"},\r\n{"period":"2017-2018","lesson":"france"}]
как можно получить именно тот id для которого lesson = france ?
я почитал о json_extract в mysql но, как то не работает .
заранее спасибо.
2. armancho7777777 - 11 Июля, 2018 - 14:37:59 - перейти к сообщению
CODE (sql):
скопировать код в буфер обмена
  1. SELECT id
  2.   FROM json_data
  3.  WHERE JSON_CONTAINS(`data`, JSON_OBJECT("lesson", "france")) > 0;
  4.  
  5. -- Or
  6.  
  7. SELECT id
  8.   FROM json_data
  9.  WHERE JSON_SEARCH(`data`, "one", "france", NULL, "$[*].lesson") IS NOT NULL;
  10.  
  11. -- Or
  12.  
  13. SELECT JSON_EXTRACT(DATA, "$[*].lesson") AS lessons
  14.   FROM json_data
  15. HAVING JSON_SEARCH(lessons, "one", "france") IS NOT NULL;
3. Соц Сеть - 11 Июля, 2018 - 16:02:05 - перейти к сообщению
отлично , сработала , просто есть одна проблема , я не смог выполнить такую функцию ,
в json data есть еще один элемент price в одном 15000 в другом 20000
[{"period":"2016-2018","lesson":"english",'price':15000},\r\n{"period":"2017-2018","lesson":"france",'price':20000}]
мне надо where data->price > 14000 and data->price <21000
вот такой запрос как можно реализовать можете знаете ?
4. armancho7777777 - 11 Июля, 2018 - 17:09:59 - перейти к сообщению
Соц Сеть пишет:
знаете ?

Знаю. Создать таблицу и записывать эти данные туда, а не в JSON.
5. Соц Сеть - 11 Июля, 2018 - 17:42:30 - перейти к сообщению
armancho7777777 пишет:
Соц Сеть пишет:
знаете ?

Знаю. Создать таблицу и записывать эти данные туда, а не в JSON.

такой вариант я тоже знаю , мне интересно можно ли реализовать такой запрос ?
6. armancho7777777 - 11 Июля, 2018 - 18:08:47 - перейти к сообщению
Да конечно можно.
Гвозди, микроскопом, забивать тоже можно.

SQL function MATCH_PRICE (Отобразить)

CODE (sql):
скопировать код в буфер обмена
  1.  
  2. SELECT id, `data`
  3.   FROM json_data
  4.  WHERE JSON_SEARCH(`data`, "one", "france", NULL, "$[*].lesson") IS NOT NULL
  5.    AND MATCH_PRICE(JSON_EXTRACT(`data`, "$[*].price"), 14000, 21000) > 0;
  6.  
7. Соц Сеть - 11 Июля, 2018 - 19:58:54 - перейти к сообщению
[quote=armancho7777777][/quote]
Ха-ха да отлично , то что надо , спасибо большое )
8. armancho7777777 - 12 Июля, 2018 - 13:37:50 - перейти к сообщению
Пожалуйста.

 

Powered by ExBB FM 1.0 RC1