Ver Mensaje Individual
  #3  
Antiguo 13-04-2023
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Reputación: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
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
);

/*
Enfermedades que contienen alguno de los sintomas 1 y 3
Ordenadas por cantidad de sintomas encontrados
*/
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
Responder Con Cita