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

Duda al usar variables en consultas

Estas en el tema de Duda al usar variables en consultas en el foro de SQL Server en Foros del Web. Hola a todos un saludo y espero me puedan orientar la siguiente duda que tengo, como ven normalmnete si se usan variables en los condiciones ...
  #1 (permalink)  
Antiguo 22/05/2013, 10:59
Avatar de swatt  
Fecha de Ingreso: septiembre-2010
Mensajes: 155
Antigüedad: 13 años, 7 meses
Puntos: 4
Duda al usar variables en consultas

Hola a todos un saludo y espero me puedan orientar la siguiente duda que tengo, como ven normalmnete si se usan variables en los condiciones por ejemplo de un select:

Código SQL:
Ver original
  1. SELECT campo1
  2. FROM tabla1
  3. WHERE campo2 = @variable1

La duda que tengo es se pueden usar las variables al reves, a que me refiero a que si en lugar de comparar el valor de un campo con la varibale comparar el valor de la variable con el valor del campo asi:

Código SQL:
Ver original
  1. SELECT campo1
  2. FROM tabla1
  3. WHERE @variable1 = campo2

Eso se pued?

Saludos y gracias!!!!
  #2 (permalink)  
Antiguo 22/05/2013, 11:10
Avatar de aid_val  
Fecha de Ingreso: mayo-2013
Ubicación: Guanajuato
Mensajes: 302
Antigüedad: 11 años
Puntos: 5
Respuesta: Duda al usar variables en consultas

No entiendo la utilidad de querer hacer esto asi.
Pero en lo personal quise hacerlo en un procedimiento almacenado y lo unico que hace es que no te hace nada.
  #3 (permalink)  
Antiguo 22/05/2013, 11:14
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Duda al usar variables en consultas

Hola si se puede solo que tendrias que hacerlo con un query dinamico:

Código SQL:
Ver original
  1. DECLARE @query VARCHAR(MAX)
  2.  
  3. SET  @query='select campo1 from tabla where ' + @variable + '=campo'
  4.  
  5. sp_executesql @query
ahora, para que necesitas eso?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #4 (permalink)  
Antiguo 22/05/2013, 11:29
Avatar de swatt  
Fecha de Ingreso: septiembre-2010
Mensajes: 155
Antigüedad: 13 años, 7 meses
Puntos: 4
Respuesta: Duda al usar variables en consultas

hola aid_val y Libras antes que nada gracias por responder, pues mira yo tengo la duda de ello ya que tengo un procedimiento almacenado el cual me obtiene estadisticas de ventas de productos, pero para ello solo tengo que obtener las estaditicas de aquellas tiendas q esten en ciertas regiones, cada region tiene un numero entonces lo que hago que es que en el variable obtnego el numero de region ala que pertence la tienda y luego voy y en el select que obtiene la informacion tengo que poner eso, personlamnete nunca lo habia usado asi yo lo que ponia era un if con la condicion:

Código SQL:
Ver original
  1. IF @region = 9
  2. .
  3. .
  4. .
  5. .

Pero mi jefe me comento que no es necesario hacer eso que simplemente con agregar eso a las condiciones en el select asi:

Select campos1, campos2, campos3,
from tabla1
where campo1 = valor1
and campo2 = valor 2
and campo3 = valor3
and @region= 9

Entonces por ese caso yo tengo la duda y mas que nada por eso es la pregunta.

Saludos
  #5 (permalink)  
Antiguo 22/05/2013, 11:38
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Duda al usar variables en consultas

creo que en tu tabla tienes un campo region cierto?? si asi fuera solo haz esto:

Select campos1, campos2, campos3,
from tabla1
where campo1 = valor1
and campo2 = valor 2
and campo3 = valor3
and region= 9

o asi no funciona?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #6 (permalink)  
Antiguo 22/05/2013, 11:47
Avatar de swatt  
Fecha de Ingreso: septiembre-2010
Mensajes: 155
Antigüedad: 13 años, 7 meses
Puntos: 4
Respuesta: Duda al usar variables en consultas

Mmmm no por desgracia no asi no funciona en las tablas que uso para obtener mi informacion no tengo ese campo por eso es que salio mi duda, entonces ese datos lo saco de otra tabla, por eso como mencionba lo puse primero en un "IF" si se cumple que haga el select si no no pero como te decia me dijeron que omitiera el if y que eso lo agregara al select como un condicion mas. Por eso mi duda de que si se podia agregar un varible a las condiciones de mi select:


Código SQL:
Ver original
  1. SELECT campos1, campos2, campos3,
  2. FROM tabla1
  3. WHERE campo1 = valor1
  4. AND campo2 = valor 2
  5. AND campo3 = valor3
  6. AND @region= 9

Pero por lo que comentabas anteriormente si se puede y es valido cierto?

Gracias nuevamente
  #7 (permalink)  
Antiguo 22/05/2013, 11:51
Avatar de aid_val  
Fecha de Ingreso: mayo-2013
Ubicación: Guanajuato
Mensajes: 302
Antigüedad: 11 años
Puntos: 5
Respuesta: Duda al usar variables en consultas

Mm puedes poner tu procedimiento almacenado para ver como lo tienes y tratar de entenderte mejor.

Si se puede agregar una variable todo depende de como la utilices

Última edición por aid_val; 22/05/2013 a las 11:54 Razón: a
  #8 (permalink)  
Antiguo 22/05/2013, 13:08
Avatar de swatt  
Fecha de Ingreso: septiembre-2010
Mensajes: 155
Antigüedad: 13 años, 7 meses
Puntos: 4
Respuesta: Duda al usar variables en consultas

Ok mira con el if tenia lo siguiente:

Código SQL:
Ver original
  1. SELECT @Region = region_id FROM Tienda WITH (Nolock) WHERE  Tienda_Id= 12
  2.  
  3.  
  4. IF @Region = 9
  5. BEGIN
  6.  
  7. SELECT Producto, precio, cantidad, tienda
  8. FROM ventas_tienda
  9. WHERE fecha > '12042013'
  10. AND tienda_id = 123
  11. AND cat_prod = 'dulces'
  12.  
  13. END

Pero una vez que he omitido el if por la situacion que les comentaba quedo asi:

Código SQL:
Ver original
  1. SELECT @Region = region_id FROM Tienda WITH (Nolock) WHERE  Tienda_Id= 12
  2.  
  3. SELECT Producto, precio, cantidad, tienda
  4. FROM ventas_tienda
  5. WHERE fecha > '12042013'
  6. AND tienda_id = 123
  7. AND cat_prod = 'dulces'
  8. AND @Region = 9

Saludos gracias una vez mas
  #9 (permalink)  
Antiguo 22/05/2013, 13:35
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Duda al usar variables en consultas

ok y cuando region es diferente a 9? digamos region es 8 que query corres??
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #10 (permalink)  
Antiguo 22/05/2013, 13:39
Avatar de swatt  
Fecha de Ingreso: septiembre-2010
Mensajes: 155
Antigüedad: 13 años, 7 meses
Puntos: 4
Respuesta: Duda al usar variables en consultas

Mmm cuando es difrente de 9 no hace nada solo cuando el numero de la region es 9 es cuando hace la consulta.
  #11 (permalink)  
Antiguo 22/05/2013, 13:56
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Duda al usar variables en consultas

i got it :)


Código SQL:
Ver original
  1. SELECT Producto, precio, cantidad, tienda
  2. FROM ventas_tienda
  3. WHERE fecha > '12042013'
  4. AND tienda_id = 123
  5. AND cat_prod = 'dulces'
  6. AND (SELECT region_id FROM Tienda WITH (Nolock) WHERE  Tienda_Id= 12) = 9

y porque usas el nolock?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #12 (permalink)  
Antiguo 22/05/2013, 14:34
Avatar de swatt  
Fecha de Ingreso: septiembre-2010
Mensajes: 155
Antigüedad: 13 años, 7 meses
Puntos: 4
Respuesta: Duda al usar variables en consultas

Gracias Libras termine por emplear mejor el escenario que tu me muestras anexando el select gracis te agradezco mucho tu ayuda gracas :)

Y el nolock como norma aqui donde laboro se me pide ponerla siempre segun esto es para que cuando haga una consulta a cualquier tabla no se bloque si la consulta hacia ella es pesada.

Saludos
  #13 (permalink)  
Antiguo 22/05/2013, 14:52
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Duda al usar variables en consultas

lo del nolock es una vil mentira, jejeje ya que lo que hace es traerte la informacion que esta en la base de datos como esta,digamos que tu tabla tiene updates e inserts, nolock lo que hace es regresar la info sin esperar que terminen las sentencias update o insert,asi que realmente no evita los bloqueos ;) pero si es norma de donde trabajas pasa :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #14 (permalink)  
Antiguo 22/05/2013, 14:57
Avatar de swatt  
Fecha de Ingreso: septiembre-2010
Mensajes: 155
Antigüedad: 13 años, 7 meses
Puntos: 4
Respuesta: Duda al usar variables en consultas

jajaja la verdad yo nunca lo habia usado porque en algun momento un profesor me comento algo similar a ello pero pues como aqui es norma pues no me queda de otra jejeje.

Gracias Libras por tu tiempo y tus repuestas me han sido de gran ayuda gracias y saludos
  #15 (permalink)  
Antiguo 22/05/2013, 16:11
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Duda al usar variables en consultas

Para comprender el NOLOCK

http://www.mssqltips.com/sqlserverti...r-nolock-hint/

Aunque esta en ingles, los ejemplos son bien claros.
__________________
MCTS Isaias Islas
  #16 (permalink)  
Antiguo 23/05/2013, 10:48
Avatar de swatt  
Fecha de Ingreso: septiembre-2010
Mensajes: 155
Antigüedad: 13 años, 7 meses
Puntos: 4
Respuesta: Duda al usar variables en consultas

Hola iislas muy buen aporte sobre NOLOCK esta entendible gracias.

Saludos

Etiquetas: select, tabla, usar, variables
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 11:06.