Sc0undRel
@Sc0undRel

Как сложить и отсортировать значения в базе MySQL?

Имеется база, в таблице posts есть поля id, text, xfields.
Поля xfields содержит записи такого вида:
price|7,59||ekonomia|0||kachestvo|7||dostavka|30||link|www.ebay.com
price|8||ekonomia|5||kachestvo|10||dostavka|30||link|www.ebay.com


Мне необходимо на PHP:
1) Сложить во всех полях числа, стоящие в этом блоке
ekonomia|0|


2) Отсортировать все записи в таблице по этому же числу (mysq запрос составить)
ekonomia|0|


Помогите, пожалуйста
  • Вопрос задан
  • 280 просмотров
Решения вопроса 1
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
1)
Выбрать все записи.
Идти по ним в цикле foreach
Разбирать строку xfields с помощью explode или регулярки

2)
привести таблицу к третьей нормальной форме - вместо богомерзкого поля xfields завести нормальные поля price, ekonomia, итд и сортировать по ним.

upd
1) регулярка /ekonomia\|(\d+)\|?/ui
2) на существующей структуре базы - задача нормально не решается.
формально можно конечно написать запрос
select * from posts
order by substring(xfields,(locate('ekonomia|',xfields)+9),locate('||',xfields,locate('ekonomia|',xfields)+9)-(locate('ekonomia|',xfields)+9))
но это извращение которое будет адски медленно работать.
могу предложить добавить в структуру таблицы все таки отдельные поля и пропатчить код который их обновляет.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы