关于数据库的一些知识
我有一个数据库,其中包含以下四个字段
`c.postdate`, `c.regularprice`, `c.isonsale`, `c.saleprice`
对数据库的标准调用如下所示:
query("SELECT * FROM items WHERE `s.cat` IN (idsarrayishere) AND `s.isactive` = '1' $sort")
这样就可以从数据库中提取所有内容。的默认值 $sort
只是空白,因为我不担心在这个时候,因为我很可能只是排序他们的最新日期使用 c.postdate
上面列出的字段。
按特定变量排序项目
我希望能够利用 ORDER BY CASE
mysql必须能够对我的项目进行排序 price highest - lowest
反之亦然。我遇到的问题是我不知道如何编写查询以便 c.isonsale = '1'
然后按顺序 c.saleprice
而不是 c.regularprice
,如果不是,按 c.regularprice
,所以当他们首先选择最低价格时,它会显示他们的销售项目和较低价格的项目。这就是我到目前为止找到的 ORDER BY
带箱子
ORDER BY
CASE `type`
WHEN 'Member' THEN LNAME
WHEN 'Group' THEN GROUPNAME
ELSE 1 END
ASC
但我不确定如何使其适应我正在尝试的工作。在这个问题上的任何帮助将不胜感激,因为mysql文档在学习这个过程时有点含糊不清。
编辑
在回复关于添加样本数据和预期结果的回复时,由于我的帖子显然对此不清楚,所以说我有这三项
item => 1
c.regularprice => 9.99
c.isonsale => 0
c.saleprice => 0
item => 2
c.regularprice => 19.99
c.isonsale => 1
c.saleprice => 6.99
item => 3
c.regularprice => 10.99
c.isonsale => 0
c.saleprice => 0
我需要能够排序的价格最低的第一,然后去最高。所以在这个例子中,我希望 item 2, item 1, item 3
按这个顺序。尽管2号商品的正常价格比其他商品高,但它的在售价格和更便宜的价格应该首先显示出来。
1条答案
按热度按时间aurhwmvo1#
既然你只是在两种可能的选择之间切换,我想
IF
将比CASE
.那个
IF
表达式将返回销售价格(如果商品正在销售),如果商品没有销售,则返回常规价格。