SQL Server - Ayuda consulta sql(SELECCIONAR ID DESDE UNA CONSULTA Y EJECUTAR LA OTRA SEGUN ESOS ID)

   
Vista:

Ayuda consulta sql(SELECCIONAR ID DESDE UNA CONSULTA Y EJECUTAR LA OTRA SEGUN ESOS ID)

Publicado por marlags (1 intervención) el 21/04/2016 16:35:10
Buenos días, llevo días intentado realizar una consulta que me permita

seleccionar los id_componentes de una tabla según un campo en este caso sería la tabla componentes donde quiero que me muestre los id_componente según el id_remesa de esta tabla que es lo que tienen en común. Luego necesito que desde la tabla items me muestre el monto de cada item según el id_componente de la consulta anterior y el id_remesa, hasta ahí va bien, PERO al querer recorrer la segunda consulta no se como asignarle los id_componente siendo que en la consulta anterior tengo una lista de estos y no los obtengo de a uno.

EJ:

- Remesa(id: 28): (esta tiene 2 componentes )

-- componente1: item1($4000), item2($2000), item3($0)

-- componente2: item1($3000), item2($0), item3(1000)


TABLAS:

1
2
3
4
5
6
7
8
9
TABLA_COMPONENTES
id_componente
nombre_componente
id_remesa
TABLA_ITEM
id_item
monto_subtitulo_actual
id_componente
id_remesa

consulta 1: Aquí obtengo todos los id_componente relacionados a una remesa

1
2
3
4
5
SELECT componentes.ID_COMPONENTE
 
FROM componentes, items
 
WHERE ITEMS.ID_REMESA = @id_remesa and items.id_componente = componentes.id_componente




consulta 2: Aquí obtengo el monto del item relacionado a la misma remesa y a un componente

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
SELECT componentes.nombre_componente,ISNULL((
SELECT monto_subtitulo_actual FROM items, componentes
 
WHERE id_subtitulo = 1 AND items.id_remesa = @id_remesa
 
AND items.id_componente = componentes.id_componente
 
AND componentes.id_componente = @id_componente
),0)as rrhh,
 
ISNULL((
SELECT monto_subtitulo_actual FROM items, componentes
 
WHERE id_subtitulo = 2 AND items.id_remesa = @id_remesa
 
AND items.id_componente = componentes.id_componente
 
AND componentes.id_componente = @id_componente
),0)as bys,
 
ISNULL((
SELECT monto_subtitulo_actual FROM items, componentes WHERE id_subtitulo = 3
 
AND items.id_remesa = @id_remesa AND items.id_componente = componentes.id_componente
 
AND componentes.id_componente = @id_componente
),0)as inversiones from componentes where componentes.id_componente = @id_componente


Necesito hacer esto por cada componente mostrado en la consulta 1.

Espero me puedan ayudar, ya que ya no se que más hacer, no me manejo mucho en SQL :/

resultado esperado:

1
2
3
4
5
| NOMBRE COMPONENTE | MONTO ITEM1 | MONTO ITEM2 | MONTO ITEM3 |
 
|COMPONENTE 1       | 4000        | 2000        |  0          |
 
|COMPONENTE 2       | 3000        |  0          | 1000        |
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