2017-03-04 13 views
1

Ich habe eine Tabelle mit einem Fremdschlüssel, der auf die ID-Spalte derselben Tabelle verweist.Reihenfolge der übergeordneten Datensätze nach Anzahl der untergeordneten Datensätze

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

Wenn ich eine Select-Abfrage mache, ist es möglich, die Ergebnisse nach der Anzahl der Kinder Datensätze zu sortieren?

+1

Möchten Sie nach der Anzahl der direkten Kinder oder der hierarchischen Kinder (Kinder, Enkel usw.) sortieren? – Mureinik

+0

@ Mureiniks Frage betont, warum Probendaten und gewünschte Ergebnisse so hilfreich sind. –

+0

Bestellung von Kindern der 1. Stufe – thelolcat

Antwort

0

Man könnte es mit einem Aggregat Abfrage auf die untergeordneten Datensätzen verbinden und Art nach, dass:

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

Sie können die Anzahl der Kinder mit einer korrelierten Unterabfrage berechnen und sortieren nach, dass:

SELECT id, name 
FROM pages 
ORDER BY (SELECT count(*) 
      FROM pages AS p2 
      WHERE p2.parent = pages.id); 
Verwandte Themen