SELECT
    programs.name AS program,
    program_categories.name AS category
FROM programs
INNER JOIN program_categories
    ON program_category_id = program_categories.id
ORDER BY
    program_categories.name,
    programs.name
The above code should provide the following result (I think):
Module 1:   |   foo
Module 1:   |   foo
Module 2:   |   foo
Module 3:   |   foo
Module 4:   |   foo
Module 5:   |   foo
Module 6:   |   foo
Module 7:   |   foo
Module 8:   |   foo
Module 9:   |   foo
Module 10:  |   foo
Module 11:  |   foo
Module 12:  |   foo
Module 13:  |   foo
But Instead produces:
Module 10:  |   foo
Module 11:  |   foo
Module 12:  |   foo
Module 13:  |   foo
Module 1:   |   foo
Module 1:   |   foo
Module 2:   |   foo
Module 3:   |   foo
Module 4:   |   foo
Module 5:   |   foo
Module 6:   |   foo
Module 7:   |   foo
Module 8:   |   foo
Module 9:   |   foo
Would someone mind explaining what causes this phenomenon that I seem to be ignorant of? As well as how to fix/work-around it?
 
    