MySQL select 2 个关联表的最低价格
MySQL select min price from 2 connected tables
我正在研究自定义电子商务解决方案,但我不知道如何从 2 个不同 table 的 2 列中 select 最低价格。
TABLE: shop_products
id
title
price
price_sale
TABLE: shop_products_variants
id
product_id
price
price_sale
所以 table shop_products 有很多 shop_products_变体。您可以在 shop_products table 上指定价格或 price_sale,但您也可以为自定义变体指定价格或 price_sale。
我需要 select 个产品,每个产品(包括产品变体)的价格最低。我能够在变体中找到最低价格,但我无法将 shop_products 的最低价格和 shop_products_variants.
的最低价格结合起来
CASE WHEN price_sale IS NOT NULL THEN price_sale ELSE price END AS price_min
如果有任何帮助,我将不胜感激...
你可以加入'shop_product'table和'shop_products_variants'table,之后你可以在结果集中找到最低价格。例如:
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
Maxim 的答案仅适用于价格和 products_variants 中的 price_sale 为 NULL 的情况。
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
我正在研究自定义电子商务解决方案,但我不知道如何从 2 个不同 table 的 2 列中 select 最低价格。
TABLE: shop_products
id
title
price
price_sale
TABLE: shop_products_variants
id
product_id
price
price_sale
所以 table shop_products 有很多 shop_products_变体。您可以在 shop_products table 上指定价格或 price_sale,但您也可以为自定义变体指定价格或 price_sale。 我需要 select 个产品,每个产品(包括产品变体)的价格最低。我能够在变体中找到最低价格,但我无法将 shop_products 的最低价格和 shop_products_variants.
的最低价格结合起来CASE WHEN price_sale IS NOT NULL THEN price_sale ELSE price END AS price_min
如果有任何帮助,我将不胜感激...
你可以加入'shop_product'table和'shop_products_variants'table,之后你可以在结果集中找到最低价格。例如:
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
Maxim 的答案仅适用于价格和 products_variants 中的 price_sale 为 NULL 的情况。
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