PDA

Ver la Versión Completa : Union de consultas en tinterna->SELECT...... UNION SELECT........ INTO TABLE......


stompy
12/11/07, 15:39:27
Hay alguna manera de hacer un SELECT.....UNION SELECT....... y almacenarlo en una tabla interna?

Gracias ante todo, m sería muy útil por temas de optimizacion.

pafú
12/11/07, 16:06:21
Te refieres a un inner-join? Si es asi aqui tienes un ejemplo.

SELECT t1~zcodfont t2~zdescrip INTO TABLE i_fondos_vacio
FROM ziber_ta_np30 AS t1
INNER JOIN yvp_ta_0102 AS t2
ON t1~zcodfont = t2~zcodfon.

si no, perdona entendi mal.

stompy
13/11/07, 06:35:43
Gracias Pafú ante todo.

Lo q necesito es emular el SELECT..... UNION SELECT.... del SQL standard y el resultado introducirlo en una tabla interna.

Osea quiero meter 2 consultas independientes sobre 2 tablas independientes, y los resultados meterlos en una sola tabla.

ballan
13/11/07, 07:38:46
Se pueden introducir sentencias de sql nativo entre las palabras reservadas

EXEC SQL

codigo sql nativo

ENDEXEC

Nunca he probado un select union select pero no se pierde nada

Tambien hay otra opcion que te podria parecer interesante

select <campos>
INTO TABLE tabla_destino
from tabla1
where <condiciones>

select <campos>
APPENDING TABLE tabla_destino
from tabla2
where <condiciones>

a efectos de performance esto es bastante valido

pafú
13/11/07, 08:25:38
Si los dos resultado de las select tienen la misma clave que tu tabla interna, podrias almacenar el resultado de estas en un tabla interna_auxiliar y luego hacer un collect de tu itab_aux to i_tab. Aqui te pongo un ejemplo que hice yo.

SELECT * FROM yvp_ta_0104b
WHERE zfuente = yvp_ta_0104-zfuente
AND ztipo = 'G'.

i_detalle_aux-zfuente = yvp_ta_0104b-zfuente.
i_detalle_aux-zdescrip = i_salida-zdescrip_pot.
i_detalle_aux-zano = yvp_ta_0104b-zano.
i_detalle_aux-zgasto = yvp_ta_0104b-zimpor.

APPEND i_detalle_aux.

SELECT * FROM yvp_ta_0104b
WHERE zfuente = yvp_ta_0104-zfuente
AND zano = yvp_ta_0104b-zano
AND ztipo = 'A'.

i_detalle_aux-zfuente = yvp_ta_0104b-zfuente.
i_detalle_aux-zdescrip = i_salida-zdescrip_pot.
i_detalle_aux-zano = yvp_ta_0104b-zano.
i_detalle_aux-zayuda = yvp_ta_0104b-zimpor.

APPEND i_detalle_aux.

COLLECT i_detalle_aux INTO i_detalle.

ENDSELECT.

ENDSELECT.