Mysql взвешивания уникальных полей по внешним значениям - PullRequest
1 голос
/ 03 апреля 2012

В настоящее время я ищу возможность упорядочить результат mysql по весам, которые не являются частью набора результатов или самой базы данных. Единственная связь между базой данных и весами основана на одном уникальном столбце, для которого существуют весовые коэффициенты.

Если быть более точным, у меня есть таблица MySql

+-------------------+
|Food               |
+-------------------+
|id:int(unique)     |
|name:string        |
+-------------------+

и один внешний источник весов для пищевых идентификаторов. Например, пользователь взвешивает еду 1 на 100, еду 2 на 200 и еду 3 на 50. Мне нужно упорядочить результат по весам, указанным пользователем.

У вас есть идеи, как я могу применить эту внешнюю информацию к результату?


Редактировать: я не ищу решение, которое заказывает результат запроса позже! Я хочу, чтобы результат был заказан сервером MySQL.

Ответы [ 2 ]

4 голосов
/ 03 апреля 2012

Вот, пожалуйста:

SELECT
CASE id 
when 1 then 300
when 2 then 100
when 3 then 200
END as weight 
from tab 
order by weight;

То, что вы здесь делаете, - это заменяете существующие значения строк вашими пользовательскими значениями, а затем сортируете их по этим значениям.

0 голосов
/ 03 апреля 2012

Если ваш внешний источник php array. тогда вы должны использовать функции php array sorting вместо сортировки в запросе mysql.

Извлеките восстановленные данные из таблицы mysql и сделайте из них массив php. Теперь создайте массив из внешнего источника и объедините оба массива и используйте сортировку array.

перечислил ее функции сортировки массива PHP. Вы можете использовать по мере необходимости.

http://php.net/manual/en/array.sorting.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...