Добавить динамическое поле в таблицу MySQL на основе значения функции

0

Сено, у меня есть таблица, которая имеет поле "cost_price". Когда пользователь видит это поле, он был добавлен через функцию PHP, которая возвращает новое значение (в основном добавляет 20%, а затем удаляет определенный процент на основе уровня регистрации пользователя). Скажем, эта функция называется final_price(). Это принимает и выводит float.

Я хочу создать такой запрос

SELECT * FROM `products` WHERE `member_price` BETWEEN `x` AND `y`

Однако поле 'member_price' не существует, это будет значение из функции final_price. Таким образом, "cost_price" будет запускаться через функцию final_price и помещаться в поле "member_price".

Есть ли способ сделать это?

  • 1
    Есть ли причина, по которой вы рассчитываете цену в PHP вместо SQL напрямую?
  • 0
    Это все может быть достигнуто в MySQL, это будет быстрее и проще в обслуживании
Показать ещё 5 комментариев
Теги:
table

2 ответа

2
Лучший ответ

Это может дать вам представление о том, как сделать расчет в sql:

SELECT * FROM products WHERE 
cost_price * 1.2 *  
(SELECT user_level * $some_coefficient FROM users WHERE user_id = $uid) 
between x and y
0

Очевидно, что фильтр необходимо применять после вычисления, поэтому ваши параметры

  • выполнить вычисления внутри сервера базы данных
  • извлекать все строки, а затем вычислять и фильтровать в интерфейсе.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню