MySQL essaie d'appliquer ORDER BY à l'UNION mais l'UNION n'a que le child colonnes (sans le child. préfixe), il n'y a pas de s.id dans l'UNION. Mais vous pouvez en ajouter un :
SELECT child.*, s.id as sid ...
UNION
SELECT child.*, s.id as sid ...
ORDER BY sid DESC
Vous devez lui donner un alias car l'UNION supprimera le nom de la table ou le préfixe d'alias. S'il y a un sid colonne dans child puis utilisez autre chose comme alias pour s.id .