Hola kazafun,
Lo que te ocurre es normal al principio y tienes toda la razón en que romperías el paradigma MVC si realizaras consultas en la vista. Por coherencia, todas las consultas a base de datos deben estar en el modelo.
Si lo que quieres hacer es un menu a 2 niveles, lo que debes hacer es algo como esto en tu modelo:
Código PHP:
$categorias_superiores = $this->db->getwhere('tu consulta', array('parent' => 0));
foreach($categorias_superiores->result() as $categoria_superior)
$categoria_superior->subcategorias = $this->db->getwhere('tu consulta', array('parent' => $categoria_superior->id));
De forma que ahora en $categorias_superiores cada registro tiene a su vez un objeto con los registros de sus subcategorías.
Espero haberme explicado, sino, sigue preguntando ;)
Saludos!