Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

duda filtrando resultados con variable

Estas en el tema de duda filtrando resultados con variable en el foro de SQL Server en Foros del Web. Hola amigos, de nuevo dando lata con mis dudas mi duda es la siguiente, tengo una consulta que debe devolver registros segun el dia, pero ...
  #1 (permalink)  
Antiguo 23/04/2009, 11:25
Avatar de zeudio  
Fecha de Ingreso: enero-2002
Mensajes: 314
Antigüedad: 22 años, 3 meses
Puntos: 4
duda filtrando resultados con variable

Hola amigos, de nuevo dando lata con mis dudas

mi duda es la siguiente, tengo una consulta que debe devolver registros segun el dia, pero si el valor de dia = 0 deberia devolver todos los registros sin imporrtar el dia. Tengo algo parecido a esto:

Código:
declare @semana	int
set @semana = 4

SELECT semana FROM plan_medico_cita
where semana = @semana or @semana = 0
descubri que poniendo un or con la variable @semana = 0 funciona (o al menos eso parece), y devuelve todos los registros en el caso de que la variable sea = 0.

ahora, mi pregunta es si esto es bueno o valido y si si, que es exactamente lo que esta haciendo el query???

saludos y gracias
  #2 (permalink)  
Antiguo 23/04/2009, 14:12
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 9 meses
Puntos: 39
Respuesta: duda filtrando resultados con variable

Usa un IF.
Código sql:
Ver original
  1. DECLARE @semana INT
  2. SET @semana = 4
  3.  
  4. IF @semana = 0
  5.   SELECT semana FROM plan_medico_cita
  6. ELSE
  7.   SELECT semana FROM plan_medico_cita
  8.   WHERE semana = @semana
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 23/04/2009, 14:44
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 15 años, 11 meses
Puntos: 220
Respuesta: duda filtrando resultados con variable

Esta es Otra Manera de Hacerlo

Código sql:
Ver original
  1. DECLARE @semana INT
  2. SET @semana = 0
  3. SELECT semana FROM plan_medico_cita WHERE semana = (CASE WHEN @semana = 0 THEN code semana ELSE @semana END)
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #4 (permalink)  
Antiguo 24/04/2009, 12:04
Avatar de zeudio  
Fecha de Ingreso: enero-2002
Mensajes: 314
Antigüedad: 22 años, 3 meses
Puntos: 4
Respuesta: duda filtrando resultados con variable

Cita:
Iniciado por flaviovich Ver Mensaje
Usa un IF.
Código sql:
Ver original
  1. DECLARE @semana INT
  2. SET @semana = 4
  3.  
  4. IF @semana = 0
  5.   SELECT semana FROM plan_medico_cita
  6. ELSE
  7.   SELECT semana FROM plan_medico_cita
  8.   WHERE semana = @semana
el problema de hacerlo con ifs amigo, es que se tratara de un stored procedure que recibira 11 parametros (perdon por no mencionarlo antes), los cuales trabajaran de esta misma forma y pues es medio imposible hacer ifs para todos los probables casos... o al menos no es practico.


La otra opcione mencionada arriba esta exelente.

muchas gracias a ambos

les recuerdo que la forma en que lo hice (como lo menciono al principio) si funciona, solo que tenia la duda de si es correcto hacerlo asi.

saludos
  #5 (permalink)  
Antiguo 24/04/2009, 16:08
Avatar de Thumper  
Fecha de Ingreso: agosto-2004
Ubicación: Jesús María - Lima - Perú
Mensajes: 270
Antigüedad: 19 años, 8 meses
Puntos: 6
Respuesta: duda filtrando resultados con variable

La que tu colocaste es la que mas se usa, ya que aplica algebra booleana en la claúsula where, yo lo dejaría así.


saludos
__________________
Martín Alexis Valdivia S.
-----------------------------
"Quisiéramos cambiar el mundo, pero Dios no nos daría el código fuente." CAP
"Si Saber No Es Un Derecho, Seguro Será Un Izquierdo." WD
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:39.