2017-03-04 3 views
1

私はidカラムと同じテーブルを指す外部キーを持つテーブルを持っています。子レコード数で親レコードを注文する

pages 
===== 
id  integer primary key autoincrement 
name text 
parent integer 
FOREIGN KEY(parent) REFERENCES pages(id) 

私はselectクエリを実行すると、子レコードの数で結果を並べ替えることができますか?

+1

直接の子の数、または階層の子(子、孫など)の数でソートしますか? – Mureinik

+0

@ Mureinikの質問は、サンプルデータと望みの結果がとても役立つ理由を強調しています。 –

+0

第1レベルの子供による注文 – thelolcat

答えて

0

あなたは、子レコードの集計クエリでそれに参加し、それに応じて並べ替えることができます:

SELECT p.* 
FROM  pages p 
JOIN  (SELECT parent, COUNT(*) AS cnt 
      FROM  pages 
      GROUP BY parent) c ON p.id = c.parent 
ORDER BY c.cnt 
0

あなたが相関サブクエリを持つ子どもの数を計算し、それに応じて並べ替えることができます:

SELECT id, name 
FROM pages 
ORDER BY (SELECT count(*) 
      FROM pages AS p2 
      WHERE p2.parent = pages.id); 
関連する問題