我目前有一个广告列表网站,其中有3个订购过滤器。默认情况下,广告按以下行排序:
$this->setState('filter_order', $app->getUserStateFromRequest('com_adsman.filter_order','filter_order', "start_date"));
当我将start_date更改为另一个列名时,它默认按该列排序,因此我知道需要进行更改的位置。现在,我将如何根据上面的代码显示随机结果?
谢谢!
编辑:这是调用实际查询的位置。
$Orderings[] = "`a`.$filter_order $filter_order_Dir";
$Orderings[] = "`a`.`id` $filter_order_Dir ";
$query = " SELECT ".implode(",",$SelectCols)." \r\n ".
" FROM `#__ads` AS `a` \r\n".
implode(" \r\n ",$JoinList)."\r\n".
$where."\r\n".
" GROUP BY `a`.`id` ".
" ORDER BY ".implode(",",$Orderings)." \r\n ";
我正在考虑使用像
这样的东西$ rand = rand(.implode(“,”,$ SelectCols));
并将$ filter_order更改为$ rand ..我知道这不会起作用,错误的语法和错误的一切,这是我需要帮助的地方!
答案 0 :(得分:0)
好吧,因为查询是在其他地方创建的,并且只填充了来自这一行的参数...你不能只改变这一行......
找到实际的查询...将“rand()作为随机”添加一个新列,并在此行中将“start_date”更改为“random”...
//编辑:
$query = " SELECT ".implode(",",$SelectCols).",rand() as random \r\n ".
" FROM `#__ads` AS `a` \r\n".
implode(" \r\n ",$JoinList)."\r\n".
$where."\r\n".
" GROUP BY `a`.`id` ".
" ORDER BY ".implode(",",$Orderings)." \r\n ";
应该给你一个名为“随机”的随机列(当然,如果已经有一个具有该名称的列,那就麻烦了......所以也许选择一个唯一的名称而不是“随机”)
答案 1 :(得分:0)
使用"RAND()"
作为ORDER BY
列。