Comunidad de diseño web y desarrollo en internet online

consulta SQL

Citar            
MensajeEscrito el 11 Jul 2015 09:29 am
Hola a todos!
Tengo que hacer una consulta a una tabla, la búsqueda debe estar condicionada por el valor de dos campos (ID e IDr) Algo así no me sirve :

SELECT * FROM tabla WHERE fecha='fecha' AND ( ID='valor' OR IDr='valor')

debería ser : Si IDr>0 buscar por IDr, Si IDr es Null o=0 buscar por ID

Ejemplo :

Row1= ID=2 , IDr=NULL
Row2= ID=2 , IDr=5
Row3= ID=4 , IDr=2

Si el 'valor' de la búsqueda es=2 debería dar como resultado la línea 1 y la 3 y no la linea 2

Probé con variables, con CASE etc, pero no me funciona...
Si hay alguien que pueda ayudarme estaré muy agradecido
Saludos a todos y gracias de antemano.

Por mabsoft

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 Jul 2015 01:31 pm
Sospecho de un mal diseño de la base de datos...

No puedes hacer un WHERE post condicional. Así que deberás resolverlo con procedimiento almacenado o bién hacer un JOIN con los registros no nulos de IDr y luego tratar de juntarlos con los registros donde ID es igual al valor que buscas como si fueran dos tablas diferentes.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 13 Jul 2015 06:18 pm
Pues como dice Driver OP los SP son un parte, la otra es hacer tablas temporales de búsqueda, también las consultas anidadas.

Para un ejemplo más especifico :) necesitamos una muestra de la base de datos (en SQL) para generar un código de prueba.

Por elporfirio

Claber

652 de clabLevel

1 tutorial

Genero:Masculino  

FullStack Web Developer

chrome
Citar            
MensajeEscrito el 14 Jul 2015 01:17 am
Hola y gracias por sus respuestas

Puede ser que sea un mal diseño de la base, lo que pasa que es un parche de algo que ya estaba funcionando, cambiaron algunas condiciones y se me ocurrió hacer algo que, si... puede estar mal...

El problema empieza cuendo me dicen que hay trabajos que se hacen para una empresa pero se realizan en otra y reportan horas de seguridad a la segunda (donde se realiza el trabajo).

Hay una tabla trabajos con un campo id_rep_seg >> int que apunta al id_empresa en la tabla empresas (y que agregué para subsanar este problema) y otro campo id_empresa que también apunta a la tabla empresas

Cuando saco las horas de seguridad trabajadas en una empresa debo discriminar entre estos dos valores, si está presente y no es null id_rep_seg se cargan esas horas a la empresa que apunta el id_rep_seg.


También hay empresas que tienen trabajos realizados con horas de seguridad, sin un trabajo definido en la tabla trabajos y es por eso que algunos id_rep_seg son NULL.

tengo una consulta almacenada con estas tablas relacionadas y en la que debo hacer esta consulta que solicito

Por mabsoft

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 Jul 2015 12:15 pm
Como sugiere elporfirio, mándanos una muestra de los datos, aunque sean aleatorios. No hay una sola forma de resolver esto.

Por DriverOp

Claber

2510 de clabLevel



 

opera

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.