我有一个复杂而混乱的风景。
我需要按价格订购。但是,我对价格有逻辑......
cad_product
id
title
store_id
cad_store
id
business_model
//This table can be associated to 1 or more products...
cad_sku
id
product_id
cad_price_sku
id
sku_id
retail
sale_retail
wholesale
sale_wholesale
我需要按价格订购sql,但同一产品可以包含1个或更多SKU,而下一个SKU可以包含比第一个更低的价格。也就是说,我需要通过每个产品SKU并返回该次要价格。
除此之外,我还有一个business_model逻辑。如果产品可以通过您的B2C价格(零售和sale_retail)显示,B2B价格(批发和销售_批发)e两种(b2b和b2c价格)。
我尝试过类似的东西。
SELECT cad_product.title, skuP.retail, skuP.sale_retail, skuP.wholesale, skuP.sale_wholesale
FROM cad_product
INNER JOIN cad_sku sku ON cad_product.id = sku.product_id
INNER JOIN cad_price_table_sku skuP ON sku.id = skuP.sku_id
INNER JOIN cad_store store ON store.id = cad_product.store_id
WHERE cad_product.deleted_at IS NULL
AND ((skuP.sale_retail <> 0 AND skuP.retail <> 0))
ORDER BY skuP.sale_retail asc, skuP.retail asc, skuP.sale_wholesale asc, skuP.wholesale asc;
这个结果......
+-----------------------------+--------+-------------+-----------+----------------+
| title | retail | sale_retail | wholesale | sale_wholesale |
+-----------------------------+--------+-------------+-----------+----------------+
| Produto de teste - Loja B2C | 1.50 | 1.00 | 0.75 | 0.50 |
| Produto de teste - Loja B2C | 20.00 | 18.00 | 80.00 | 0.00 |
| Novamente TESTE | 125.23 | 4892.13 | 800.00 | 400.00 |
+-----------------------------+--------+-------------+-----------+----------------+
答案 0 :(得分:0)
因此,如果我理解正确,您需要按4个价格列的最低价格订购。
这是以这种方式完成的
SELECT cad_product.title, skuP.retail, skuP.sale_retail, skuP.wholesale, skuP.sale_wholesale
FROM cad_product
INNER JOIN cad_sku sku ON cad_product.id = sku.product_id
INNER JOIN cad_price_table_sku skuP ON sku.id = skuP.sku_id
INNER JOIN cad_store store ON store.id = cad_product.store_id
WHERE cad_product.deleted_at IS NULL
AND ((skuP.sale_retail <> 0 AND skuP.retail <> 0))
ORDER BY LEAST(skuP.sale_retail, skuP.retail, skuP.sale_wholesale, skuP.wholesale) asc;