如何实现这样的排序

session1983 2012-03-27 10:16:01
在商品列表中 新添加的商品并且是上架状态的有有库存的默认排在前面,下架的库存少的或者为0的排在后面。
goods_id是自增的。大的就是最新添加的。库存字段:is_on_sale 1为上架 0为下架 库存数量:goods_number

请问sql怎么写
...全文
154 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2012-03-28
  • 打赏
  • 举报
回复
不是给你了吗
g.is_on_sale and g.goods_number>0 desc
session1983 2012-03-28
  • 打赏
  • 举报
回复
应该如何判断呢?
xuzuning 2012-03-28
  • 打赏
  • 举报
回复
g.is_on_sale desc 表示上架的摆在前面
所以 上架且库存为0 的也会出现在下架的前面
如果你不想出现这种情况,就要加判断条件
g.is_on_sale and g.goods_number>0 desc
以此类推

你应该在 sql 管理器中测试好各种情况再书写代码
session1983 2012-03-28
  • 打赏
  • 举报
回复
分别是:g.is_on_sale desc,g.sort_order desc,g.goods_id desc,g.goods_number
DESC
xuzuning 2012-03-28
  • 打赏
  • 举报
回复
贴出 $sort 和 $order 的值
session1983 2012-03-28
  • 打赏
  • 举报
回复
相关代码:
$default_sort_order_method = $_CFG['sort_order_method'] == '0' ? 'DESC' : 'ASC';
$default_sort_order_type = $_CFG['sort_order_type'] == '0' ? 'g.is_on_sale desc,g.sort_order desc,g.goods_number DESC,g.goods_id' : ($_CFG['sort_order_type'] == '1' ? 'shop_price' : 'last_update');

$sort = (isset($_REQUEST['sort']) && in_array(trim(strtolower($_REQUEST['sort'])), array('goods_id','is_on_sale','goods_number','shop_price', 'last_update'))) ? trim($_REQUEST['sort']) : $default_sort_order_type;
$order = (isset($_REQUEST['order']) && in_array(trim(strtoupper($_REQUEST['order'])), array('ASC', 'DESC'))) ? trim($_REQUEST['order']) : $default_sort_order_method;



sql xxx,xxx from goods where xxx ORDER BY $sort $order


我目前是这样写的。但是排列出来的效果是库存为0的也出现在前面了。
number123456 2012-03-27
  • 打赏
  • 举报
回复
order by is_on_sale desc,goods_number desc,goods_id desc


order by可以多重使用,优先级以先后顺序排列,
is_on_sale 为1的在上边,下架的在下边
goods_number 在上边的排序结果中 库存多的在前,
goods_id 在以前结果中,同样条件下新发的在最前
jaksmine 2012-03-27
  • 打赏
  • 举报
回复

正解
[Quote=引用 1 楼 xuzuning 的回复:]

... order by is_on_sale desc, goods_id desc, goods_number desc
[/Quote]
改一下昵称 2012-03-27
  • 打赏
  • 举报
回复
ORDER BY `is_on_sale` DESC, `goods_id` DESC, `goods_number` DESC
xuzuning 2012-03-27
  • 打赏
  • 举报
回复
... order by is_on_sale desc, goods_id desc, goods_number desc
session1983 2012-03-27
  • 打赏
  • 举报
回复
希望可以加我的Q:63340753 ecshop商品列表的排序帮忙指导一下。谢谢。
蓝色的雨哎 2012-03-27
  • 打赏
  • 举报
回复
order by 后面可以跟多个字段,按照字段的前后顺序依次来排序。

21,882

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧