微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – MYSQL排序函数,取决于使用数据库字段值作为数组键的算术运算

我有产品表,有2个字段:价格,货币.货币字段中的可能值为1,2,3. 1表示MDL,2表示USD,3表示EUR.我必须以mdl货币的价格对我的产品进行分类.所以我有一个费率数组:

$v = array(1,11.38,15.8);

用我的查询帮助我,我尝试过类似的东西,但我有错误

$results = $this->Product
                ->query("SELECT `id`,`price`,`currency` FROM products 
                         ORDER BY price*$v[currency] DESC");

嗯……我会试着通过一个例子来解释.

我的桌子:

id|price|currency
_________________
1 | 500 | 2
2 | 300 | 3

显示一个产品价格以美元保存,第二个产品价格以欧元保存.但我必须在MDL valute中对它们进行排序.所以我得到每个值的一系列费率:
$rates = array([1] => 1,[2] => 11.50,[3] => 15.50);

所以我必须通过公式的结果订购我的产品:价格*价值率

在第一种情况下:500 * $rate [‘db的货币值,在我们的情况下为2] = 500 * 11.50等.

提前致谢.

解决方法:

由于此问题的扩展示例,我已编辑此查询.
让我们假设货币也存储在某些表中,比方说货币(如果没有,它应该是无论如何).

表货币应如下:

ID        VALUE        CODE
-----------------------------
1         1            USD
2         11.38        EUR
3         15.8         MDL

那么查询应该是:

SELECT p.`id`, p.`price`, p.`price` * c.`value` AS 'ratio' 
FROM products p
LEFT JOIN currency c ON c.`id` = p.`currency`
ORDER BY `ratio` DESC

通过此查询您可以根据产品表中的货币ID从表格货币中选择货币值,最后按配给价格*货币值排序结果.

我知道也许你的货币在某些配置中只有硬编码为数组,但将货币放入数据库(如果不是这样)真的会更好.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐