sql查询prestashop:如何过滤组合?

lfapxunr  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(242)

我已经设法在prestashop上编写了一个sql查询,以便从我的电子商务中导出带有属性的产品和组合。现在我想过滤结果,只得到每个产品最便宜的组合。
例如,我得到了这个表,其中有2种产品,每种产品有3种可能的组合:
产品价格
甲22€
甲44€
100美元€
b 15级€
乙30€
乙45€
我想知道是否有一种使用sql查询的方法,使用where命令或任何其他方法,来过滤产品中的组合,从而只给出最便宜的组合。
因此sql查询的结果是:
产品-价格
甲22€
b 15级€
有可能吗?

3pvhb19x

3pvhb19x1#

一个简单的 GROUP BY 查询应该工作:

SELECT product, MIN(price) AS min_price
FROM yourTable
GROUP BY product;

编辑:
如果您的价格数据实际上是文本,并且每个价格字符串的末尾都有一个欧元符号,那么您必须将其删除,并在取最小值之前转换为整数:

SELECT
    product,
    MIN(CAST(LEFT(price, CHAR_LENGTH(price) - 1) AS UNSIGNED)) AS min_price
FROM yourTable
GROUP BY product;

演示

但是,最好不要将货币符号和数字价格数据存储在同一列中。相反,您可以添加一个数字列,该列将维护价格对应的货币。然后,您只需要使用我的第一个查询就可以得到您想要的答案。

nhaq1z21

nhaq1z212#

您尝试过简单的聚合查询吗?

select product, min(price) as cheapest_price
from mytable
group by product;

这将为你提供每种产品的最低价格。

相关问题