if you want to get everything (entries and aliases) as rows, then something like this should work:
SELECT ge.id, 'entry' as type, ge.concept, ge.definition FROM mdl_glossary_entries ge WHERE ge.glossaryid = 8 AND ge.approved = 1 UNION SELECT al.id, 'alias' as type, al.alias AS concept, ge.definition FROM mdl_glossary_entries ge JOIN mdl_glossary_alias al ON al.entryid = ge.id WHERE ge.glossaryid = 8 AND ge.approved = 1 ORDER BY concept ASC
I've added to it a "type" column to be able to differentiate entries and aliases.
Also, note that it won't be suitable to be used in get_record_xxx() calls, because there can be dupe ids so, surely, you will need to use get_recordset_xxx() + looping instead.
And, of course... you will get some definitions repeated, when there are both entries and aliases.
Hope it helps, ciao