Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > FireMonkey
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-04-2023
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 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
  #2  
Antiguo 13-04-2023
giantonti1801 giantonti1801 is offline
Miembro
 
Registrado: oct 2022
Posts: 143
Poder: 2
giantonti1801 Va por buen camino
Cita:
Empezado por duilioisola Ver Mensaje
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
gracias por tu respuesta y gracias por la solucion ya lo adapte y estoy mas cerca de lograr el objectivo

Código SQL [-]
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
s.descripcion like '%diarrea%'
group by e.id, e.descripcion
order by 3 desc, 1
Código SQL [-]
id  descripcion  cantidad_sintomas_encontrados
19  ALERGIA ALIMENTARIA  2
14  ALERGIA A LA LECHE  1
15  ALERGIA AL CACAHUETE  1
16  ALERGIA AL HUEVO  1
17  ALERGIA AL PESCADO  1
33  ARTRITIS ENTEROPÁTICAS  1

ahora me surgen algunas interrogantes: partiendo de un principio donde todo comienza por una exploración inicial del paciente como ejemplo: 'Paciente con dificultas respiratoria y presión en el pecho' esto es un ejemplo pero dentro de este texto tendría yo que buscar en cualquiera de sus palabras coincidencia con los síntomas. con el like no lo estoy logrando ya que el busca una sola palabra dentro de esta cadena: habrá alguna forma de hacerlo? o habrá alguna forma de lograr eso funcione? la idea inicial es que con esta cadena de texto se reduzcan la búsqueda y de alguna forma luego podría proporcionar unas series de preguntas a fin de acercarme lo mas que pueda con una posible enfermedad o diagnóstico.
Responder Con Cita
  #3  
Antiguo 13-04-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Containing.

https://firebird21.wordpress.com/tag/containing/
Responder Con Cita
  #4  
Antiguo 13-04-2023
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
El problema es que tiene que estar perfectamente escrito (acentos, espacios, puntuación, etc.) Por suerte con CONTAINING las mayúsculas no importan.
Te pongo un ejemplo:
El texto que escribe de exploración dice "... presion en el pecho".
Este síntoma no está en la lista de síntomas.
Código SQL [-]
/*
SINTOMA
ID   DESCRIPCION
-------------------------------
1    Dificultades respiratorias
2    Presion en pecho
3    Diarrea
*/

select *
from sintoma
where
'El paciente presenta dificultades respiratorias y presion en el pecho.' containing descripcion
                                                             ^^^^
/*
RESULTADO
-------------------------------
ID   DESCRIPCION
1    Dificultades respiratorias
*/

Si buscas por palabras, encontrarás más sintomas de los que menciona la exploración.
Por ejemplo todos estos síntomas tienen la palabra presion.
  • presion en la cabeza
  • presion en el pecho
  • presion alta
  • presion baja
Responder Con Cita
  #5  
Antiguo 13-04-2023
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Este tipo de tareas se resuelve mejor con FTS:

https://learn.microsoft.com/en-us/sq...l-server-ver16
__________________
El malabarista.
Responder Con Cita
  #6  
Antiguo 14-04-2023
giantonti1801 giantonti1801 is offline
Miembro
 
Registrado: oct 2022
Posts: 143
Poder: 2
giantonti1801 Va por buen camino
Cita:
Empezado por mamcx Ver Mensaje
Este tipo de tareas se resuelve mejor con FTS:

https://learn.microsoft.com/en-us/sq...l-server-ver16
estuve leyendo esta opcion que me sugiere y si efectivamente creo que puedo lograr obtener los resultado deseado. ahora bien es posible crear una tabla temporal dentro del from? una tabla que soporte storprocedure, indices etc. digo eso porque si hago esto dentro de la base de dato pudiera chocar con otro usuario ya que el sistema sera usado simultaneamente por otros usuarios. esta tabla seria temporal ya que solamente se utilizaria para separar el string por palabras luego deberá destruirse.
Responder Con Cita
  #7  
Antiguo 14-04-2023
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Cita:
Empezado por giantonti1801 Ver Mensaje
estuve leyendo esta opcion que me sugiere y si efectivamente creo que puedo lograr obtener los resultado deseado. ahora bien es posible crear una tabla temporal dentro del from? una tabla que soporte storprocedure, indices etc. digo eso porque si hago esto dentro de la base de dato pudiera chocar con otro usuario ya que el sistema sera usado simultaneamente por otros usuarios. esta tabla seria temporal ya que solamente se utilizaria para separar el string por palabras luego deberá destruirse.
Estas comprendiendo mal la idea. No tienes que procesar nada con FTS, solo aplicarlo, el se encarga de todo el resto (FTS es un "indice" especializado. Asi como no manejas la lógica de un BTREE tampoco la de un FTS)
__________________
El malabarista.
Responder Con Cita
  #8  
Antiguo 14-04-2023
giantonti1801 giantonti1801 is offline
Miembro
 
Registrado: oct 2022
Posts: 143
Poder: 2
giantonti1801 Va por buen camino
Cita:
Empezado por mamcx Ver Mensaje
Este tipo de tareas se resuelve mejor con FTS:

https://learn.microsoft.com/en-us/sq...l-server-ver16
estube tratando de hacer algunas pruebas pero no se puede aplicar a SQLSERVER
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
busqueda SQL leandro085 SQL 2 16-04-2011 14:26:43
Consulta selectiva sizne SQL 19 19-05-2010 00:14:46
Eliminación Selectiva en ListView MaMu OOP 13 31-01-2008 20:48:53
Busqueda... mjjj Conexión con bases de datos 3 08-05-2007 10:58:37
Consulta Selectiva sobre Store Procedure raul_sal SQL 5 19-07-2003 21:35:37


La franja horaria es GMT +2. Ahora son las 06:19:36.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi