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

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

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

  1. TABLE: shop_products
  2. id
  3. title
  4. price
  5. price_sale
  6. TABLE: shop_products_variants
  7. id
  8. product_id
  9. price
  10. price_sale

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

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

我会感激任何帮助。。。

ego6inou

ego6inou1#

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

  1. MIN(LEAST( IFNULL(shop_products.price_sale, shop_products.price),
  2. IFNULL(
  3. IFNULL(shop_products_variants.price_sale, shop_products_variants.price), shop_products.price)
  4. )
  5. ) AS min_price
nuypyhwy

nuypyhwy2#

您可以加入“shop\u product”表和“shop\u products\u variants”表,然后在结果集中找到最小价格。例如:

  1. SELECT sp.id,
  2. sp.title,
  3. MIN(LEAST( IFNULL(sp.price_sale, sp.price, sp.price_sale),
  4. IFNULL(spv.price_sale, spv.price, spv.price_sale)
  5. )) AS min_price
  6. FROM shop_products AS sp
  7. LEFT JOIN shop_products_variants AS spv ON shp.product_id = sp.id
  8. GROUP BY sp.id,
  9. sp.title

相关问题