Tu ne pourras pas tout faire en une requête, enfin ça aurait pu se faire avec LEFT|RIGHT JOIN mais tu te serais retrouvé avec des doublons dans les rubriques, typiquement en prenant juste les id (et la rubrique 2 qui n'a aucune sous rubrique) :
rubrique_id,sous_rubrique_id
1,1
1,2
1,3
2,NULL
3,1
3,2
Alors ouais tu aurais qu'une requête mais ça duplique des données et c'est moins évident pour boucler dessus.
Ce que tu peux faire, c'est une fois la première requête exécutée, sélectionner toutes les sous rubriques avec un id_rubrique IN (liste,des,ids,de,la,premiere,requete).
Il faudrait quand même faire un petit traitement pour associer chaque sous rubrique à la rubrique parente via l'id avant de faire la boucle d'affichage.
Au passage je ne penses pas que ce soit utile de bosser avec deux tables rubriques/sous_rubriques, à mon avis ce serait mieux d'avoir un champ "niveau" dans la table rubriques et un champ rubrique_parente optionnel. Ça permettrait entre autres de ne pas être limité à un seul niveau d'imbrication des rubriques.