Unir varias tablas usando los campos requeridos

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • golden_fbi
    Junior Member
    • sep
    • 17

    #1

    Unir varias tablas usando los campos requeridos

    Hola! Disculpen queria unir 5 tablas en 1 sola que es del tipo de tooodas las 5 tablas con casi todos sus campos. La tabla que asocia esas tablas y tiene las llaves es la de "zgdctt_panel" y le hago un inner join, si busca y encuentra los datos pero solamente me trae los campos que tiene la tabla "zgdctt_panel" y no me trae los otros campos que quiero de las otras 5 tablas.. Como le puedo hacer??

    Este es mi codigo:

    SELECT
    zgdctt_Leader~fname zgdctt_Leader~lname zgdctt_Leader~ACTIVE ZGDCTT_LEADER~IDLEADER
    zgdctt_Member~fname zgdctt_Member~lname zgdctt_Member~FACTLOCATION zgdctt_Member~ACTIVE ZGDCTT_MEMBER~IDMEMBER
    ZGDCTT_ASSIGN~IDASSIGN
    zgdctt_dvlpmnt~DEVTYP zgdctt_dvlpmnt~DESC_DVLPMNT
    zgdctt_rqrmnt~DESCRQRMNT ZGDCTT_RQRMNT~IDRQRMNT
    ZgDCTT_PANEL~PANELDATE ZGDCTT_PANEL~PANELDATE2

    FROM ZgDCTT_PANEL

    inner join ZGDCTT_MEMBER on ZgDCTT_PANEL~IDMEMBER = ZGDCTT_MEMBER~IDMEMBER
    inner join ZGDCTT_LEADER on ZGDCTT_LEADER~IDLEADER = ZgDCTT_PANEL~IDLeader
    inner join ZGDCTT_RQRMNT on ZGDCTT_RQRMNT~IDRQRMNT = ZgDCTT_PANEL~IDRQRMNT
    inner join ZGDCTT_ASSIGN on ZGDCTT_ASSIGN~IDASSIGN = ZgDCTT_PANEL~IDASSIGN
    inner join ZGDCTT_dvlpmnt on ZGDCTT_dvlpmnt~DEVTYP = ZgDCTT_PANEL~DEVTYP

    INTO CORRESPONDING FIELDS OF TABLE TG_bseg
    ** TABLA = VALOR DEL CAMPO
    *INTO CORRESPONDING FIELDS OF TABLE TG_bseg

    WHERE
    ZgDCTT_PANEL~IDLEADER = ZGDCTT_LEADER-IDLEADER
    OR ZGDCTT_PANEL~IDMEMBER = ZGDCTT_MEMBER-IDMEMBER
    OR ZgDCTT_PANEL~IDASSIGN = ZGDCTT_ASSIGN-IDASSIGN
    OR ZgDCTT_PANEL~DEVTYP = ZGDCTT_DVLPMNT-DEVTYP
    OR ZgDCTT_PANEL~IDRQRMNT = ZGDCTT_RQRMNT-IDRQRMNT
    OR ZgDCTT_PANEL~PANELDATE = ZGDCTT_PANEL-PANELDATE.

    MOVE-CORRESPONDING ZGDCTT_PANEL TO TG_BSEG.
    COLLECT TG_BSEG.


    Muchas gracias!!!
    Atte
    Moni
  • jcflores
    Member
    • mar
    • 55

    #2
    Estimado:

    No ha intentado en hacer
    Select *
    From Tabla
    Where Condición

    Y luego hacer un For All Entries para las siguientes tablas, y al final mover los registros a una super tabla.

    Saludos.
    Saludos.

    Juan Carlos Flores
    Consultor ABAP

    "Pensar, programar... él solo compila y ejecuta"

    Comentario

    • Atlas
      Senior Member
      • ago
      • 107

      #3
      Prueba a poner al reves el "on" a estas dos tablas:

      inner join ZGDCTT_MEMBER on ZgDCTT_PANEL~IDMEMBER = ZGDCTT_MEMBER~IDMEMBER

      Comentario

      • golden_fbi
        Junior Member
        • sep
        • 17

        #4
        Gracias por los consejos, pero el problema esque no me aparecen todos los campos que quiero solamente los campos de la tabla panel (la que asocia a las otras 5) como le puedo hacer para que me traiga los demas campos de las otras tablas que corespondan a su id. (el id de cada tabla esta en el panel y esos son los que si me trae)


        por ejemplo, Me trae el numero del miembro pero yo quisiera que tambien me trajera su nombre y apellido

        gracias!!!

        Comentario

        • Atlas
          Senior Member
          • ago
          • 107

          #5
          aparentemente el join esta bien, la única explicacion que le veo es que los campos que seleccionas no se llamen igual que los campos de la tabla interna a la que quieres volcarlos ( esto es necesario para el intocorresponding) si es el caso prueba a hacer un selecto into table, si los campos que seleccionas se corresponden en el tipo, longitud y orden con los de la tabla interna o si no es así hacindo un :

          select campo1 campo2 .... campon into (campo1_bis, campo2_bis... campon_bis)

          Comentario

          • golden_fbi
            Junior Member
            • sep
            • 17

            #6
            Gracias, Ya Vi Que Los Nombres De Los Campos De Las Tablas No Concordaban Con Los De Mi Tabla Interna, Lo Corregi En El Select Con Un As Y Un Into Table...

            Comentario

            • Rodolfo Montiel Rivera
              Member
              • oct
              • 92

              #7
              2 Consejitos

              Saludos,

              * Creo que también debes tomar en cuanto cual va a ser tu tabla llave y partir de que los datos que vas a ir a conseguir de otras tablas son campos que pueden o no existir.

              * También podrías incluir left outer join para casos en los cuales no exista la relación con tu campo llave y asi no discriminar el registro por completo.
              01010000
              01001010
              10011000
              10100001

              De Byte a Beat.

              Comentario

              • sconoredhot
                Senior Member
                • feb
                • 341

                #8
                For all entries

                Hola,

                Yo intentaría con hacer selects a las tablas requeridas usando el for all entries, es más consistente.

                Saludos,
                Sebas

                Desarrollador ABAP.

                Comentario

                Trabajando...