0

id/parent_id で並べ替えられた隣接リストがある場合、親のすべての子を 3 番目のテキスト フィールド (「名前」など) でアルファベット順に並べ替える簡単な方法はありますか?

http://explainextended.com/2009/03/17/hierarchical-queries-in-mysql/で提供されている情報を使用して、MySQL に並べ替えられた隣接リストを返させました。理想的には、これにより 3 番目の列で子を並べ替えることができますが、その例ではテスト データ セットに余分な列はまったく含まれていません。

クエリを実行すると、データは次のようになりますが、子孫でアルファベット順に並べ替える必要があります。

$myArr[] = array(1,0,"instruments");
$myArr[] = array(2,1,"electric");
$myArr[] = array(3,1,"acoustic");
$myArr[] = array(4,2,"guitar");
$myArr[] = array(5,2,"banjo");
$myArr[] = array(6,3,"guitar");
$myArr[] = array(5,3,"banjo");

または:

array (
  0 => 
  array (
    0 => 1,
    1 => 0,
    2 => 'instruments',
  ),
  1 => 
  array (
    0 => 2,
    1 => 1,
    2 => 'electric',
  ),
  2 => 
  array (
    0 => 3,
    1 => 1,
    2 => 'acoustic',
  ),
  3 => 
  array (
    0 => 4,
    1 => 2,
    2 => 'guitar',
  ),
  4 => 
  array (
    0 => 5,
    1 => 2,
    2 => 'banjo',
  ),
  5 => 
  array (
    0 => 6,
    1 => 3,
    2 => 'guitar',
  ),
  6 => 
  array (
    0 => 5,
    1 => 3,
    2 => 'banjo',
  ),
)

これを次のようにソートする必要があります。

instruments
    acoustic
        banjo
        guitar
    electric
        banjo
        guitar

ありがとう!

4

1 に答える 1

1

コード例がないため、正確に何をしたいのかわかりませんが、次のようにする方が簡単ではないでしょうか。

SELECT * FROM my_table ORDER BY id, parent_id, title;

最初に id で注文し、次に id が同じ場合は parent_id で注文し、id と parent_ids が同じ場合はタイトルで注文します

于 2012-08-14T14:53:05.070 に答える