Union de consultas en tinterna->SELECT...... UNION SELECT........ INTO TABLE......

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • stompy
    Junior Member
    • jun
    • 13

    #1

    Union de consultas en tinterna->SELECT...... UNION SELECT........ INTO TABLE......

    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ú
    Member
    • sep
    • 49

    #2
    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.

    Comentario

    • stompy
      Junior Member
      • jun
      • 13

      #3
      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.

      Comentario

      • ballan
        Senior Member
        • oct
        • 671

        #4
        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
        Editado por última vez por ballan; 13/11/2007, 10:00:21.

        Comentario

        • pafú
          Member
          • sep
          • 49

          #5
          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.

          Comentario

          Trabajando...