2015-03-20 2 views
0

Так что мне нужно заказывать проценты, подсчитанные из двух значений одного поля, где данные хранятся в JSON.Mysql порядок на проценты от двух значений сумма

Имя поля, где хранится значение имени program_invested_details и, например, значение:

{"invested":"120.00","received":"1.08"}

мне нужно что $query бы (received * 100/invested) из этой области

SELECT *, ($query) AS PERRCENT_TOTAL 
FROM programs_list 
WHERE program_add_status = 4 AND program_status = 1 ORDER BY PERRCENT_TOTAL DESC 

, как это делает возможным делать?

ответ

1

По умолчанию MySQL не имеет возможности анализировать строку JSON.

Одним из вариантов было бы использовать расширение, такое как common_schema, которое добавило бы возможность анализировать JSON и извлекать поля (см. get_option). Я не уверен в производительности, которую вы могли бы использовать с этим расширением.

Другим вариантом является запрос всех данных и анализ JSON в вашей клиентской программе. Еще раз, будет значительное влияние на производительность, если будет много данных.

+0

Похоже на отличную идею с get_option. Я попробовал, но кажется, что есть ошибка. Что может быть неправильным в этом запросе? 'SELECT *, ((get_option (" program_invested_details "," received ") * 100)/get_option (" program_invested_details "," investested ")) AS PERRCENT_TOTAL FROM program_list WHERE program_add_status = 4 AND program_status = 1 ORDER BY PERRCENT_TOTAL DESC' –

+0

Do у вас установлено расширение ['common_schema'] (https://code.google.com/p/common-schema/)? Он не устанавливается по умолчанию. – lsowen

+0

Похоже, что клиентская версия ниже, чем требуется (требуется 5.1, 5.0.10 есть ..), но веб-сайт должен работать на общем хосте, поэтому я не думаю, что они установят новый клиент только для меня –

Смежные вопросы