У меня есть таблица, содержащая некоторую информацию о метасах (я думаю, Wordpress делает это), например:
| id | name | value |
| 002 | meta1 | string1-1 |
| 003 | meta1 | string1-2 |
| 004 | meta2 | ipaddress1 |
| 005 | meta2 | ipaddress2 |
| 006 | meta2 | ipaddress3 |
| 007 | meta3 | numerical3-1 |
Как видите, meta1 содержит строковые значения, meta2 содержит IP-адреса, meta3 содержит числовые значения. Моя проблема при запросе этой таблицы состоит в том, чтобы упорядочить все сначала по имени, а затем по значению.
Не было бы проблем, если бы все значения были строками, но у меня есть разные типы значений для разных метаданных, например, это требует использования функции INET_ATON () mySQL для правильной сортировки meta2.
Мой пример касается строк и IP-адресов в качестве примера, но мой вопрос общий, я мог бы хотеть отсортировать другую мету в порядке DES C вместо порядка AS C, et c ...
У меня есть все мои мета в массиве, и я уже думал об обновлении этого до ассоциативного массива, подобного этому, в PHP:
$metas = [
['mid' => 'meta1', 'cri' => ''], //string
['mid' => 'meta2', 'cri' => 'INET_ATON'], //ip
['mid' => 'meta3', 'cri' => ''], //string
];
Так что я могу где-то хранить, какие критерии я хочу использовать для каждой меты, пустой 'cri' является критерием сортировки по умолчанию. Я могу добавить другую информацию, например 'ord', со значениями 'AS C' или 'DES C' ...
. Мой вопрос касается синтаксиса запроса для достижения этой цели, указав спецификацию c метод упорядочения для указанного c имени, например, но все упорядочено с использованием INET_ATON ().
SELECT * FROM mytable GROUP BY name ORDER BY INET_ATON(value)
Если у кого-то есть указатель, идея ... спасибо. (Я также пытался использовать javascript для визуальной сортировки результата, и есть некоторые идеи с таблицей TinySort и т. Д. c ... но кажется, что сортированный результат из SQL .. выглядит чище). Спасибо. Пьер.