MySQL从2个连接表中选择最低价格

问题描述 投票:0回答:2

我正在研究自定义电子商务解决方案,但我不知道如何在2个不同的表上从2列中选择MIN价格。

TABLE: shop_products
id
title
price
price_sale

TABLE: shop_products_variants
id
product_id
price
price_sale

所以table shop_products hasMany shop_products_variants。您可以在shop_products表上指定price或price_sale,但也可以为自定义变量指定price或price_sale。我需要为每种产品选择价格最低的产品(包括产品型号)。我能够在变种中找到MIN价格,但我无法将shop_products的MIN价格与shop_products_variants的MIN价格相结合。

CASE WHEN price_sale IS NOT NULL THEN price_sale ELSE price END AS price_min

我将不胜感激任何帮助...

mysql e-commerce min price
2个回答
1
投票

您可以加入'shop_product'表和'shop_products_variants'表,之后您可以在结果集中找到最低价格。例如:

SELECT sp.id,
       sp.title,
       MIN(LEAST( IFNULL(sp.price_sale, sp.price, sp.price_sale), 
                  IFNULL(spv.price_sale, spv.price, spv.price_sale) 
       )) AS min_price
FROM shop_products AS sp
LEFT JOIN shop_products_variants AS spv ON shp.product_id = sp.id
GROUP BY sp.id,
         sp.title

0
投票

当products_variants中的price&price_sale为NULL时,Maxim的答案适用于小修复。

MIN(LEAST( IFNULL(shop_products.price_sale, shop_products.price),
           IFNULL(
               IFNULL(shop_products_variants.price_sale, shop_products_variants.price), shop_products.price)
           )
   ) AS min_price
© www.soinside.com 2019 - 2024. All rights reserved.