Jika mereka yang tidak memiliki orang tua memiliki null
di parent
. mereka kolom, pernyataan Anda akan sangat sederhana:
SELECT id, name, parent FROM categories order by coalesce(parent, id), id;
Jika Anda bersikeras pada 0
tidak mewakili orang tua, Anda dapat menggunakan lebih banyak CASE WHEN ... THEN ...
pernyataan.
Sunting:
-- Sorting by name instead
select a.id, a.name, a.parent
from categories a left join categories b on a.parent=b.id
order by coalesce(b.name, a.name), a.name