Order by 具有复杂的关系
Order by with complex relationship
我的心情很复杂。
我需要按价格订购。但是,我对价格有逻辑...
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 和 return 次要价格。
除此之外,我还有一个 business_model 逻辑。产品可以通过 B2C 价格(零售和 sale_retail)、B2B 价格(批发和 sale_wholesale)和两者(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 |
+-----------------------------+--------+-------------+-----------+----------------+
因此,如果我没有理解错的话,您想按 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;
我的心情很复杂。
我需要按价格订购。但是,我对价格有逻辑...
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 和 return 次要价格。
除此之外,我还有一个 business_model 逻辑。产品可以通过 B2C 价格(零售和 sale_retail)、B2B 价格(批发和 sale_wholesale)和两者(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 |
+-----------------------------+--------+-------------+-----------+----------------+
因此,如果我没有理解错的话,您想按 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;