He hecho una prueba simple y este es el resultado que he obtenido:
Código SQL
[-]
CREATE TABLE ENFERMEDAD (
ID INTEGER,
DESCRIPCION VARCHAR(60)
);
CREATE TABLE SINTOMA (
ID INTEGER,
DESCRIPCION VARCHAR(60)
);
CREATE TABLE SINTOMA_X_ENFERMEDAD (
ID INTEGER,
ID_ENFERMEDAD INTEGER,
ID_SINTOMA INTEGER
);
select e.id, e.descripcion,
count(sxe.id_sintoma) cantidad_sintomas_encontrados,
list(s.descripcion) lista_de_sintomas
from enfermedad e
join sintoma_x_enfermedad sxe on e.id = sxe.id_enfermedad
join sintoma s on sxe.id_sintoma = s.id
where
id_sintoma in (1, 3)
group by e.id, e.descripcion
order by 3 desc, 1
ID DESCRIPCION CANTIDAD_SINTOMAS_ENCONTRADOS LISTA_DE_SINTOMAS
-----------------------------------------------------------------------
2 E2 2 S1,S3
1 E1 1 S1
3 E3 1 S1