在商品列表中 新添加的商品并且是上架状态的有有库存的默认排在前面,下架的库存少的或者为0的排在后面。
goods_id是自增的。大的就是最新添加的。库存字段:is_on_sale 1为上架 0为下架   库存数量:goods_number  请问sql怎么写 

解决方案 »

  1.   

    ... order by is_on_sale desc, goods_id desc, goods_number desc
      

  2.   

    ORDER BY `is_on_sale` DESC, `goods_id` DESC, `goods_number` DESC
      

  3.   

    order by is_on_sale desc,goods_number desc,goods_id desc
    order by可以多重使用,优先级以先后顺序排列,
    is_on_sale  为1的在上边,下架的在下边
    goods_number  在上边的排序结果中 库存多的在前,
    goods_id   在以前结果中,同样条件下新发的在最前
      

  4.   

    order by 后面可以跟多个字段,按照字段的前后顺序依次来排序。
      

  5.   

    希望可以加我的Q:63340753  ecshop商品列表的排序帮忙指导一下。谢谢。
      

  6.   

    相关代码:
    $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的也出现在前面了。
      

  7.   

    贴出 $sort 和 $order 的值
      

  8.   

    分别是:g.is_on_sale desc,g.sort_order desc,g.goods_id desc,g.goods_number
    DESC 
      

  9.   

    本帖最后由 xuzuning 于 2012-03-28 12:09:54 编辑
      

  10.   

    不是给你了吗
    g.is_on_sale and g.goods_number>0 desc