How do I order by parent then child?
for mysql, you can try: (with the condition your Child's ParentID is your ParentID's FeatureID)
SELECT FeatureID, ParentID, Feature
FROM Features
ORDER BY case when ParentID=0 then FeatureID else ParentID end * 1000 + FeatureID ASC
From your comment, if you know there are only two levels, there is an easy solution:
select *
from @Features feat
order by
case
when ParentID = 0
then Feature
else (
select Feature
from @Features parent
where parent.FeatureID = feat.ParentID
)
end
, case when ParentID = 0 then 1 end desc
, Feature
- Sort by the name of the root element: for the root, this is Feature column. For the children, look up the root's name with a subquery.
- Sort the root on top
- Sort the children by name
Example at SE Data.