mysql从2个连接的表中选择最小价格

iezvtpos  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(320)

我在定制电子商务解决方案工作,但我不知道如何从2个不同的表上的2列中选择最小价格。

TABLE: shop_products
id
title
price
price_sale

TABLE: shop_products_variants
id
product_id
price
price_sale

因此,table shop产品有许多shop产品变体。您可以在shop\u products表中指定price或price\u sale,但也可以为自定义变量指定price或price\u sale。我需要为每个产品(包括产品变体)选择价格最低的产品。我能够在变体中找到最小价格,但我无法将shop\u products的最小价格和shop\u products\u变体的最小价格结合起来。

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

我会感激任何帮助。。。

ego6inou

ego6inou1#

马克西姆的答案只适用于小修正案的情况下,价格和价格销售在产品的变种是空的。

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
nuypyhwy

nuypyhwy2#

您可以加入“shop\u product”表和“shop\u products\u 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

相关问题