Yo no usaría el asterisco, sino los nombres de los campos de las tablas familias y categorías, en el mismo orden. Yo usaría INNER JOIN para relacionar las tablas. Y ordenaría al final por esos campos a los que he añadido alias.
Código MySQL:
Ver original(SELECT familias.
*, categorias.
*, '0' crit1orden
, familia_num_orden crit2orden
FROM familias
INNER JOIN categorias
ON familias.categoria_id
= categorias.id_categoria
AND familias.categoria_id
= $id_categoria
AND familias.familia_num_orden
> 0) (SELECT familias.
*, categorias.
*, '1' crit1orden
, familia_num_orden crit2orden
FROM familias
INNER JOIN categorias
WHERE familias.categoria_id
= categorias.id_categoria
AND familias.categoria_id
= $id_categoria
AND familias.familia_num_orden
< 1) ORDER BY crit1orden
, crit2orden
Prueba y nos dices