Mi sembrava di essere stato chiaro:

Originariamente inviato da satifal
Se l'ordine delle category non è alfabetico credo che il problema non possa essere risolto semplicemente in SQL.
l'order by ti serve solamente per avere un resultset ordinato (in maniera ascendente o discendente) e ragruppato per categorya e position. In questo modo, scorrendo il resultset è più semplice recuperare le categorie in base all'ordinamento descritto nel file.