SQL - pasar el valor de un select a una variable

   
Vista:

pasar el valor de un select a una variable

Publicado por OSCAR (7 intervenciones) el 21/06/2016 16:16:03
Buenas tardes.
Es mi primer mensaje en este foro y me temo que repetire con cierta frecuencia.
Desde hace tiempo me ha gustado el mundillo de la programacion y he de decir que no se me da mal del todo; eso si, sin llegar a niveles de experto ni mucho menos.
A día de hoy se programar varias marcas de automatas, en C++, lenguaje de CNC, varias marcas de robots... y por razones de trabajo empiezo a necesitar tener nociones de SQL.
Mientras llega el curso que he pedido estoy en "modo autodidacta" con la ayuda puntual de un par de informaticos de la empresa.

El caso es que se hace alguna cosa basica, como algun select o algun inner join. Hoy me he encontrado en la necesidad de almacenar el resultado de un SELECT en una variable para luego utilizar dicha variable en otro SELECT.

Googleando he conseguido hacerlo y funciona pero tengo un problema y es que el resultado del SELECT que almaceno en una variable puede ser unico y todo es perfecto o puede ser multiple y solo consigo el ultimo dato; esto no me sirve. Necesito el dato de todas las filas que me devuelve el SELECT para luego usarlo en mi segundo SELECT

Aqui el codigo...

declare @orden nchar(10)
declare @lote nchar(10)
SELECT @orden = '702476' --S1

SELECT @lote = Lote_externo FROM Maldivas_Oran.Logistica.Articulos_lotes Lot where Lot.Orden_trabajo = CAST(@orden as INT) --S2

SELECT batchidentifier AS LOTE, manufacturingReference AS REFERENCIA, initialQuantity AS Q_LOTE FROM Batch where batchIdentifier = @lote --S3


Un resultado del SELECT S2 podria ser por ejemplo
BNE001
BNE002
BNE003
BNE004
Pero solo obtengo BNE004 y necesito los 4 datos (y ejecutar el SELECT S3 con los 4 resultados)


Muchas gracias a todos!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

pasar el valor de un select a una variable

Publicado por Yamil (4 intervenciones) el 21/06/2016 16:27:06
Puedes hasce un subquery dentro del primero.Seria algo como

SELECT batchidentifier AS LOTE, manufacturingReference AS REFERENCIA, initialQuantity AS Q_LOTE
FROM Batch
WHERE batchIdentifier IN (
SELECT Lote_externo
FROM Maldivas_Oran.Logistica.Articulos_lotes Lot
WHERE Lot.Orden_trabajo = CAST(@orden as INT))
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

pasar el valor de un select a una variable

Publicado por OSCAR (7 intervenciones) el 21/06/2016 16:43:12
Como dije... no tengo mucha idea de esto.
Entiendo que es un SELECT dentro de otro. Algo asi como un SELECT recursivo (no se si esta puede ser la palabra correcta...)
Desde mi desconocimiento del tema he de decir que tiene mucho sentido y buena pinta.
Mañana lo pruebo. Estoy consultando esto desde casa porque quiero evitar el uso de foros en el trabajo.
Una vez mas... muchas gracias!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

pasar el valor de un select a una variable

Publicado por Isaias (690 intervenciones) el 21/06/2016 17:13:04
No creo que la propuesta de IN sea la mas adecuada, ¿Que tal un EXISTS o NOT EXISTS?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

pasar el valor de un select a una variable

Publicado por OSCAR (7 intervenciones) el 21/06/2016 20:49:35
Podrias ponerme un ejemplo de codigo con EXISTS sobre el ejemplo que he puesto??
Sin mas datos me quedo un poco perdido...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

pasar el valor de un select a una variable

Publicado por Isaias (690 intervenciones) el 21/06/2016 21:20:07
"As is"

1
2
3
4
5
6
7
SELECT batchidentifier AS LOTE, manufacturingReference AS REFERENCIA, initialQuantity AS Q_LOTE
FROM Batch
WHERE batchIdentifier exists(
SELECT Lote_externo
FROM Maldivas_Oran.Logistica.Articulos_lotes Lot
WHERE batchIdentifier = Lote_externo
AND Lot.Orden_trabajo = CAST(@orden as INT))
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

pasar el valor de un select a una variable

Publicado por Javier Lopez Vargas (1 intervención) el 06/08/2016 15:46:51
Hola Aqui te dejo un ejemplo, espero te sirva
1
2
3
4
5
6
7
8
USE AdventureWorks2012 ;
GO
DECLARE @var1 nvarchar(30);
SELECT @var1 = 'Generic Name';
SELECT @var1 = Name
FROM Sales.Store
WHERE CustomerID = 1000 ;
SELECT @var1 AS 'Company Name';
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar