Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Consulta SQL solo si el campo tiene valor (https://www.clubdelphi.com/foros/showthread.php?t=85697)

webmasterplc 20-04-2014 17:49:09

Consulta SQL solo si el campo tiene valor
 
Buenas tengo una tabla con unos valores de referencia
la estructura de la tabla es la siguiente:
Código SQL [-]
CREATE TABLE `valoresnormales` (   `codigo` int(11) NOT NULL,   `codigoexamen` int(11) DEFAULT NULL,   `sexo` int(11) DEFAULT NULL,   
`edadinicio` int(11) DEFAULT NULL,   `edadfin` int(11) DEFAULT NULL,   `valornormal` varchar(50) DEFAULT NULL,   
PRIMARY KEY (`codigo`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
de alli necesito hacer una consulta donde se cumplan 3 condiciones sexo, edadinicio y edadfinal pero muchas veces los campos edadinicio y edad final estan vacion porque no influye la edad y no se como hacer en delphi dinamicamente para que cuando esten vacios esos campos no los tome como condicional
Código SQL [-]
SELECT valoresnormales.codigoexamen, valoresnormales.sexo, valoresnormales.edadinicio, valoresnormales.edadfin, valoresnormales.valornormal 
FROM valoresnormales WHERE valoresnormales.sexo = 0 AND valoresnormales.edadinicio > '' AND valoresnormales.edadfin < ''

ecfisa 21-04-2014 10:24:32

Cita:

Empezado por webmasterplc (Mensaje 475344)
... necesito hacer una consulta donde se cumplan 3 condiciones sexo, edadinicio y edadfinal pero muchas veces los campos edadinicio y edad final estan vacion porque no influye la edad y no se como hacer en delphi dinamicamente para que cuando esten vacios esos campos no los tome como condicional

Hola webmasterplc.

No me queda muy claro el planteo, pero según infiero de parte de tu código y lo que mencionas arriba, entiendo que queres que se seleccionen aquellos registros en se cumplan las siguientes condiciones: Que SEXO sea igual a cero y que un valor dado este comprendido entre los campos EDADINICIO y EDADFIN o que estos sean nulos.

Entonces:
Código SQL [-]
SELECT CODIGOEXAMEN, SEXO, COALESCE(EDADINICIO, ''), COALESCE(EDADFIN, ''), VALORNORMAL
FROM VALORESNORMALES
WHERE SEXO = 0
   AND (:VALOR BETWEEN EDADINICIO AND EDADFIN)
    OR (EDADINICIO IS NULL AND EDADFIN IS NULL)
En el caso de que que la ausencia de los campos EDADINICIO y EDADFIN esté señalada por otro valor que NULL, tendrás que cambiar la comprobación por la que corresponda en la última línea del código .

Saludos :)

webmasterplc 21-04-2014 14:26:15

Gracias hermano Funcionó Perfecto


La franja horaria es GMT +2. Ahora son las 06:40:44.

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