Yo creeria que deberia colocar la consilta para mirar si la tiene creada corerctamente y hay si miramos como mostramos los datos.
La otra seria "mas codigo pero le saldria mas facil y sin complicarse"
- Cargar los servicios en una consulta
- recorrer esta consulta en un while
- Al entrar al while consultar los subservicios de este servicio
- y mostrarlos en otro while.
De esta forma lo esta haciendo solo es que reorganice un opco el codigo o sino el problema seria las consultas que generó. Recuerde que dentro del primer while tiene que realizar la consulta de los subservicios paraque busque los que pertenecen a cada servicio