我有一个带有以下各列的产品价格表
product_id, seller_id, original_price, sale_price, sale_start_date, sale_end_date
我想按升序对表格进行有效价格排序。
有效价格可以是original_price或sale_price,如果其不为零,并且当前日期在开始日期和结束日期之间。
如果有人有解决方案,请解释一下该解决方案,因为我在sql方面不是很强并且正在尝试学习
答案 0 :(得分:1)
您可以通过选择effective_price
作为汇总并对其进行排序来实现。例如:
select
*,
if (
sale_price > 0 and sale_start_date <= now() and sale_end_date > now(),
sale_price,
original_price
) as effective_price
from product_price
order by effective_price asc
或者通过雄辩:
ProductPrice::selectRaw('
*,
if (
sale_price > 0 and sale_start_date <= now() and sale_end_date > now(),
sale_price,
original_price
) as effective_price
')->orderBy('effective_price')->get();