0

好的,这就是我想要做的:

我不想在我的 sql 查询中执行排序

我的学生地址的数据库架构在下面共享:

城市(必填) | 面积(必填) | 道路(可选)| BUILDING_NAME(可选)

我想对学生进行排序(分组)

  1. CITY ,然后在城市排序(组)学生中
  2. AREA , withing area sort (group) students by
  3. ROAD,注意 2 个城市有可能具有相同的道路名称,所以..

这是我到目前为止所做的:

我已经设法按 CITY 对学生进行排序(分组),(这是一个对象 $student ,它不仅包含地址,还包含与学生相关的所有信息,并且不按 CITY 名称排序),现在在我的城市内想将属于同一地区和同一城市内同一道路的学生分组。我该如何实现这一目标

我希望我已经解释清楚了

例子 :

NAME           CITY         AREA       ROAD      BUILDING NAME

  1. > 1. demo_student 纽约四广场市中心海雾

    1. 样品纽约 zzpq zzar deni
    2. 检查孟买领主 mg 路 abc
    3. 你好孟买 andheri 一些演示
    4. 萨米孟买班德拉 abc ll

    输出

NAME           CITY         AREA       ROAD      BUILDING NAME

  1. > 1. demo_student 纽约四广场市中心海雾

    1. 样品纽约 zzpq zzar deni
    2. 你好孟买 andheri 一些演示
    3. 萨米孟买班德拉 abc ll
    4. 检查孟买领主 mg 路 abc

4

2 回答 2

2

这听起来像是usort的工作和自定义函数来比较两行并确定哪一行先行。你可以把它写得像你喜欢的那样复杂。

<?php
function cmp($a, $b)
{
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}

$a = array(3, 2, 5, 6, 1);

usort($a, "cmp");

foreach ($a as $key => $value) {
    echo "$key: $value\n";
}
?>

The above example will output:

0: 1
1: 2
2: 3
3: 5
4: 6

现在,顺便说一句,看在上帝的份上,忽略这个答案并在 SQL 查询中执行它。如果您想更改订单中的某些内容,它将比 PHP 能够做到的更快,消耗更少的资源并且更容易更新。

于 2012-08-31T07:57:00.543 回答
0

通常,这是使用 list> 的映射完成的

该实现可能会在潜在成员(学生)上循环并将他们分派到适当的列表中。地图可以动态填充组,如果您知道所有组,也可以预先填充。

这个想法不是确定 2 个学生属于同一组,而是确定每个学生所属的组。

另外,当您的意思是组时,请不要说排序。

于 2012-08-31T07:57:38.043 回答