Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-04-2015
tiqui_loquito tiqui_loquito is offline
Miembro
 
Registrado: oct 2013
Posts: 56
Poder: 11
tiqui_loquito Va por buen camino
Como hacer la siguiente consulta

Hola a todos

Les voy a contar lo que hace la consulta:

Por ejemplo, tengo en en una base de datos en el campo FECHA_PROBABLE_PARTO los siguientes datos
ID_NORMA_4505 FECHA_PROBABLE_PARTO
1 01/01/1800
2 01/01/1800
3 01/01/1845
4 01/01/1800
5 01/01/2015
6 01/01/1800
7 01/01/1845

En la tabla se guardan los siguientes tres valores: 01/01/1800, 01/01/1845 o la fecha en que se haya hecho una consulta de parto

La consulta siguiente me traería el valor 01/01/1845 que corresponde al ID_NORMA_4505 = 7

Código SQL [-]
      FPP=NULL;
      SELECT FIRST(1) TBL_NORMA_4505.FECHA_PROBABLE_PARTO
      FROM TBL_NORMA_4505
      WHERE TBL_NORMA_4505.FECHA_PROBABLE_PARTO <> '1800-01-01'
      AND TBL_NORMA_4505.FECHA_REGISTRO>=:FECHA_INICIAL AND TBL_NORMA_4505.FECHA_REGISTRO<=:FECHA_FINAL
      AND TBL_NORMA_4505.ID_PACIENTE=:ID_PACIENTE
      ORDER BY TBL_NORMA_4505.ID_NORMA_4505 DESC
      INTO
      :FPP;
      IF ((FPP IS NULL)) THEN FPP = '1845-01-01';

Hasta ahí todo bien. Pero me han solicitado lo siguiente condición en el where

Código SQL [-]
     SELECT FIRST(1) TBL_NORMA_4505.FECHA_PROBABLE_PARTO
      FROM TBL_NORMA_4505
     -- WHERE TBL_NORMA_4505.FECHA_PROBABLE_PARTO <> '1800-01-01' 

/*Debo reemplazar el where por las siguienets tres condiciones, en el orden en que estan */

WHERE FECHA_PROBABLE_PARTO <> de 01/01/1800 y <> de 01/01/1845 /*Si no hay datos pase la otra condición*/
WHERE FECHA_PROBABLE_PARTO  <> de 01/01/1800  /*Si no hay datos pase la otra condición*/ 
WHERE FECHA_PROBABLE_PARTO  <>  01/01/1800 


      AND TBL_NORMA_4505.FECHA_REGISTRO>=:FECHA_INICIAL AND TBL_NORMA_4505.FECHA_REGISTRO<=:FECHA_FINAL
      AND TBL_NORMA_4505.ID_PACIENTE=:ID_PACIENTE
      ORDER BY TBL_NORMA_4505.ID_NORMA_4505 DESC
      INTO
      :FPP;
      IF ((FPP IS NULL)) THEN FPP = '1845-01-01';


Hay alguna forma de hacerlo?

La verdad no se como hacerlo, se los agradecería mucho
Responder Con Cita
  #2  
Antiguo 21-04-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola tiqui_loquito.

Cita:
Empezado por tiqui_loquito Ver Mensaje
... tengo en en una base de datos en el campo FECHA_PROBABLE_PARTO los siguientes datos
Código:
ID_NORMA_4505 FECHA_PROBABLE_PARTO
1             01/01/1800
2             01/01/1800
3             01/01/1845
4             01/01/1800
5             01/01/2015
6             01/01/1800
7             01/01/1845
La consulta siguiente me traería el valor 01/01/1845 que corresponde al ID_NORMA_4505 = 7
...
En realidad, como estas usando FIRST, te traería el valor correspondiente al ID_NORMA_4505 = 3 o NULL si el valor de :ID_PACIENTE no tiene coincidencia.

¿ Que dato representa la columna FECHA_REGISTRO ?

No logro comprender la consigna ¿ Que se intenta obenter con la consulta ?, ¿ Podrías explicar la situación con mas detalle ?

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 21-04-2015
tiqui_loquito tiqui_loquito is offline
Miembro
 
Registrado: oct 2013
Posts: 56
Poder: 11
tiqui_loquito Va por buen camino
Hola

Tengo una tabla que se llama norma4505, en esta se encuentran los registros de consultas de pacientes, las consultas pueden ser diferentes, por ejemplo: consulta básica, prenatal, visual, etc.

En cada consulta se guarda un registro, en este se guarda id paciente, edad, fecha del registro. En cada registro se guardan 50 campos.

Cuando se hace la consulta, donde se le manda el id paciente y el rango de fechas en que necesitamos buscar.

Resulta que un paciente en ese rango de fechas asistió a 5 consultas diferentes. En el campo de fecha de parto se guarda una fecha por cada consulta. Dada ciertas condiciones en el código se guarda 01/01/1800, 01/01/1845 o la fecha de la co consulta.

Cuando hago la búsqueda en un rango de fechas, debo usar las condiciones que exprese anteriormente . antes me traía la de la.ultima consulta, pero ahora debo hacerlo como comente.

No se si se usa un case, pero no sabría como hacerlo.

Gracias
Responder Con Cita
  #4  
Antiguo 21-04-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola tiqui_loquito.

Sigo sin tener en claro el concepto, pero de acuerdo a los condicionales que mencionas:
Cita:
Empezado por tiqui_loquito Ver Mensaje
...
Código SQL [-]
WHERE FECHA_PROBABLE_PARTO <> de 01/01/1800 y <> de 01/01/1845 /*Si no hay datos pase la otra condición*/
WHERE FECHA_PROBABLE_PARTO  <> de 01/01/1800  /*Si no hay datos pase la otra condición*/ 
WHERE FECHA_PROBABLE_PARTO  <>  01/01/1800
...
Usando CASE-WHEN sería algo similar a esto:

Código SQL [-]
SELECT ...
  CASE
    WHEN FECHA_PROBABLE_PARTO <> '01.01.1800' AND FECHA_PROBABLE_PARTO <> '01.01.1845' THEN
      'ACCION 1'
    WHEN FECHA_PROBABLE_PARTO <> '01.01.1800' THEN
      'ACCION 2'
    WHEN FECHA_PROBABLE_PARTO <> '01.01.1845' THEN
      'ACCION 3' 
  END
FROM ...

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Como hacer consultas de registro anterior y siguiente Jorge Orozco Varios 12 16-10-2013 01:34:13
ayuda con la siguiente consulta microbiano SQL 9 14-04-2010 18:45:10
Como Hacer La Siguiente Consulta... rgstuamigo MySQL 2 11-09-2008 23:19:33
¿como puedo hacer lo siguiente? Jorge Alonzo Varios 2 19-10-2007 21:44:27
Necesito hacer lo siguiente dtomeysoto La Taberna 1 25-05-2006 17:21:25


La franja horaria es GMT +2. Ahora son las 12:50:55.


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