0

ここで私がやりたいことです:

SQL クエリで並べ替えを実行したくない

学生アドレスの私のデータベース スキーマは以下で共有されます。

都市 (必須) | AREA (必須) | 道路 (オプション) | BUILDING_NAME (オプション)

生徒を分類(グループ化)したい

  1. CITY 、次に都市内で sort(group) 学生を by
  2. AREA 、エリアを使用して (グループ) 学生を並べ替えます
  3. ROAD 、注 2 都市は同じ道路名を持つ可能性があります。

これは私が今までやってきたことです:

私はなんとかCITYで学生をソート(グループ化)しました(これは、住所だけでなく学生に関連するすべての情報をすべて持ち、CITY名でソートされていないオブジェクト$studentです)、現在は都市i内にあります都市内の同じエリアと同じ道路に属する学生をグループ化したい.どうすればこれを達成できますか

私はそれを明確に説明したことを願っています

例 :

NAME           CITY         AREA       ROAD      BUILDING NAME

  1. > 1. demo_student ニューヨーク フォースクエア ダウンタウン 海霧

    1. サンプル ニューヨーク zzpq ザール デニ
    2. チェック ムンバイ セイン mg ロード abc
    3. こんにちはムンバイ andheri いくつかのデモ
    4. サミー ムンバイ バンドラ abc ll

    出力

NAME           CITY         AREA       ROAD      BUILDING NAME

  1. > 1. demo_student ニューヨーク フォースクエア ダウンタウン 海霧

    1. サンプル ニューヨーク zzpq ザール デニ
    2. こんにちはムンバイ andheri いくつかのデモ
    3. サミー ムンバイ バンドラ abc ll
    4. チェック ムンバイ セイン mg ロード abc

4

2 に答える 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 に答える