Хотя кажется, что я не могу получить никаких удовлетворительных ответов на мой последний вопрос, опубликованный здесь, теперь я собираюсь завершить свой проект, используя MySQL вместо SQLite в качестве фона базы данных в простой среде localhost. Единственное, что мне нужно сделать, это использовать определяемую пользователем функцию (UDF), которую PHP может хорошо обрабатывать с SQLite, используя следующий код в запросе UPDATE:
function nPoints($n1, $n2, $n3, $n4)
{
$numb = array($n1, $n2, $n3, $n4);
sort($numb);
return $numb[0] * 1 + $numb[1] * 2 + $numb[2] * 3 + $numb[3] * 4;
}
По сути, я беру 4 числа и делаю расчет, который умножает наименьшее число на 1, затем следующее наименьшее на 2, третье наименьшее на 3, а затем наибольшее на 4 независимо от того, есть ли связи или нет. Могу ли я сделать это также как пользовательскую функцию MySQL, а если нет, то каков самый чистый способ, не делая более сложных вещей, таких как логика быстрой сортировки с использованием циклов for-next и т. д.?
Если PHP может обрабатывать регистрацию таких пользовательских функций, как это может быть с SQLite, на самом деле было бы лучше, но как?
Зачем использовать sort ()? Просто напишите алгоритм быстрой сортировки всего 4 числа. В качестве альтернативы вы можете сделать это в PHP (я предполагаю, что вы подключаете PHP к MYSQL).
Нет причин не
SELECT * FROM table;
//Perform Calculation
UPDATE table SET x = y WHERE something;
Грубая сила может быть:
$max = $N1 + $N2*2 + $N3*3 + N4*4;
IF ($max < $N1 + $N2*2 + $N4*3 + N3*4) THEN
$max = $N1 + $N2*2 + $N4*3 + N3*4
END IF
...
...
...
return $max;
Извини, я здесь потерялся. 1. Значит, в функции MySQL я не могу использовать массивы и функции сортировки, чтобы упростить то, что мне нужно выполнить, и прибегаю к старым методам? 2. Могу ли я использовать PHP так же, как и изначально, для выполнения функции MySQL по своему желанию? Если да, то как?
Я полагаю, что в последнюю минуту я мог бы последовать [этому примеру] (stackoverflow.com/questions/25070577/…).
Я бы выбрал решение PHP, данное Юджином Лорманом, его легче поддерживать в долгосрочной перспективе.