gpt4 book ai didi

mysql - 按动态生成的字段值的值进行选择

转载 作者:行者123 更新时间:2023-11-29 10:53:44 24 4
gpt4 key购买 nike

我正在使用一个表格,其中包含一个小型定制电子商务网站上的各种库存商品。我的客户请求了许多过滤器,包括价格范围。

很简单,只是它们还需要基于用户帐户中的各种因素进行与用户相关的定价,因此价格是在查询中计算的。

理想的 SQL 是这样的:

SELECT
SQL_CALC_FOUND_ROWS s.*,
IF(s.value_a <= 0.5, s.price*1.1*0.80, s.price*1.5*0.80) AS total_price
FROM stock s
WHERE
(total_price >= :minimum_price_filter AND total_price <= :maximum_price_filter)
AND (s.value_b='X' OR s.value_b='Y')
ORDER BY total_price ASC, s.value_a, s.value_b LIMIT 0,25

( 1.1*0.801.5*0.80 是四个与用户相关的值。)

显然SELECT计算工作正常,ORDER 也是如此。 ,以及 WHERE对于表中的其他值:但现在添加此价格过滤器不起作用,因为该价格字段 ( total_price ) 并且其值是在查询中动态生成的。

有关如何将该价格范围过滤器添加到 WHERE 的任何提示或提示条款实际上可能可行吗?

WHERE (total_price >= :minimum_price_filter AND total_price <= :maximum_price_filter)

如果问题的解决方式有任何不同,我正在使用 PHP 和 PDO。

感谢您的宝贵时间。

最佳答案

使用HAVING:

SQL 中添加了 HAVING 子句,因为 WHERE 关键字不能与聚合函数一起使用

SELECT 
SQL_CALC_FOUND_ROWS s.*,
IF(s.value_a <= 0.5, s.price*1.1*0.80, s.price*1.5*0.80) AS total_price
FROM
stock s
WHERE
s.value_b='X'
OR s.value_b='Y'
HAVING
total_price <= :maximum_price_filter
AND total_price >= :minimum_price_filter
ORDER BY
total_price ASC,
s.value_a, s.value_b
LIMIT
0,25

这个查询应该可以完成这项工作。

关于mysql - 按动态生成的字段值的值进行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43326791/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com