none
inner join de varias tablas RRS feed

  • Pregunta

  • Amigos buenas tardes estoy realizando una combinacion de tablas para que me  muestre  codigo , descripcion, existencia , lote, fecha de vencimiento y precio (este precio se define segun el convenio),  dependiendo el codigoProducto, la bodega y el covenio  estos tres serian los parametros q me arrojan la informacion , el query que he realizado funciona bien  , pero aca me hace falta consumir informacion de la tabla sapar que esta esta ligada con el codigo del producto  pero resulta que este codigo en la tabla sapar es un compuesto y en la columna item de esa misma tabla sapar  estan los codigo de  las partes que componen ese compuesto , lo que deseo realizar es que al momento de ingresar un codigo ya sea solo una parte o un compuesto me arroje el resultado , para el codigo compuesto realice otro query y tambien funcioana bien pero  quiero saber si hay alguna manera de unirlos , espero me haya hecho entender 

    este es el query que me trae solo partes

    select top(1) sp.CodProd,
       sp.Descrip,
       sx.Existen,
       sdp.Descrip AS Bodega,
       sl.NroLote,
       sl.Cantidad,
       sl.FechaV,
       SAT.Monto 
       from SAPROD as sp
    left JOIN SAEXIS as sx
    on sp.CodProd = sx.CodProd
    left JOIN SALOTE as sl
    on sp.CodProd = sl.CodProd
    left JOIN SADEPO as sdp
    on sx.CodUbic = sdp.CodUbic
    left JOIN SAITCV AS SAT
    ON sp.CodProd = sat.CodItem
    left join SACLIE as SC
    ON SAT.CodConv = SC.CodConv
      where  sp.CodProd='11-05224' AND SAT.CodConv = 'D002'and sdp.CodUbic='01'

    este es el resultado de ese query


     este es el query de compuestos

    SELECT spart.CodAlte ,sp.Descrip,sx.Existen,sdp.CodUbic,sdp.Descrip,sl.NroLote,sl.Cantidad,sl.FechaV,stcv.Monto FROM SAPART as spart
    left join SAPROD as sp
    on spart.CodAlte = sp.CodProd 
    left join SAEXIS as  sx
    on spart.CodAlte  = sx.CodProd 
    left join SALOTE as sl
    on spart.CodAlte = sl.CodProd
    left join SADEPO as sdp 
    on sx.CodUbic = sdp.CodUbic
    left join saitcv  as stcv
    on sp.CodProd = stcv.CodItem
    left join SACLIE as sc
    on stcv.CodConv = sc.CodConv
    WHERE spart.CodProd ='C3.0-4.0N1' 

    este es el resultado de ese compuesto

    reitero nuevamente como prodria unir estas dos consulta para que arroje resultados dependiendo el codigo.


    Daniel

    viernes, 21 de febrero de 2020 21:18

Respuestas

  • Hola Dannycv012:

    A priori viendo los resultados, puedes utilizar union

    select top (1) [sp].[CodProd]
                 , [sp].[Descrip]
                 , [sx].[Existen]
                 , [sdp].[Descrip] AS [Bodega]
                 , [sl].[NroLote]
                 , [sl].[Cantidad]
                 , [sl].[FechaV]
                 , [SAT].[Monto]
    from 
         SAPROD as sp
         left JOIN SAEXIS as sx on sp.CodProd = sx.CodProd
         left JOIN SALOTE as sl on sp.CodProd = sl.CodProd
         left JOIN SADEPO as sdp on sx.CodUbic = sdp.CodUbic
         left JOIN SAITCV AS SAT ON sp.CodProd = sat.CodItem
         left join SACLIE as SC ON SAT.CodConv = SC.CodConv
           where [sp].[CodProd] = '11-05224'
                 AND [SAT].[CodConv] = 'D002'
                 and [sdp].[CodUbic] = '01'
    UNION 
    
    SELECT [spart].[CodAlte]
         , [sp].[Descrip]
         , [sx].[Existen]
         , [sdp].[CodUbic]
         , [sdp].[Descrip]
         , [sl].[NroLote]
         , [sl].[Cantidad]
         , [sl].[FechaV]
         , [stcv].[Monto]
    FROM 
         SAPART as spart
         left join SAPROD as sp on spart.CodAlte = sp.CodProd
         left join SAEXIS as sx on spart.CodAlte = sx.CodProd
         left join SALOTE as sl on spart.CodAlte = sl.CodProd
         left join SADEPO as sdp on sx.CodUbic = sdp.CodUbic
         left join saitcv as stcv on sp.CodProd = stcv.CodItem
         left join SACLIE as sc on stcv.CodConv = sc.CodConv
           WHERE [spart].[CodProd] = 'C3.0-4.0N1';

    Union elimina los duplicados.

    https://docs.microsoft.com/es-es/sql/t-sql/language-elements/set-operators-union-transact-sql?view=sql-server-ver15

    • Marcado como respuesta Dannycv012 martes, 25 de febrero de 2020 13:49
    sábado, 22 de febrero de 2020 6:08

Todas las respuestas

  • Hola Dannycv012:

    A priori viendo los resultados, puedes utilizar union

    select top (1) [sp].[CodProd]
                 , [sp].[Descrip]
                 , [sx].[Existen]
                 , [sdp].[Descrip] AS [Bodega]
                 , [sl].[NroLote]
                 , [sl].[Cantidad]
                 , [sl].[FechaV]
                 , [SAT].[Monto]
    from 
         SAPROD as sp
         left JOIN SAEXIS as sx on sp.CodProd = sx.CodProd
         left JOIN SALOTE as sl on sp.CodProd = sl.CodProd
         left JOIN SADEPO as sdp on sx.CodUbic = sdp.CodUbic
         left JOIN SAITCV AS SAT ON sp.CodProd = sat.CodItem
         left join SACLIE as SC ON SAT.CodConv = SC.CodConv
           where [sp].[CodProd] = '11-05224'
                 AND [SAT].[CodConv] = 'D002'
                 and [sdp].[CodUbic] = '01'
    UNION 
    
    SELECT [spart].[CodAlte]
         , [sp].[Descrip]
         , [sx].[Existen]
         , [sdp].[CodUbic]
         , [sdp].[Descrip]
         , [sl].[NroLote]
         , [sl].[Cantidad]
         , [sl].[FechaV]
         , [stcv].[Monto]
    FROM 
         SAPART as spart
         left join SAPROD as sp on spart.CodAlte = sp.CodProd
         left join SAEXIS as sx on spart.CodAlte = sx.CodProd
         left join SALOTE as sl on spart.CodAlte = sl.CodProd
         left join SADEPO as sdp on sx.CodUbic = sdp.CodUbic
         left join saitcv as stcv on sp.CodProd = stcv.CodItem
         left join SACLIE as sc on stcv.CodConv = sc.CodConv
           WHERE [spart].[CodProd] = 'C3.0-4.0N1';

    Union elimina los duplicados.

    https://docs.microsoft.com/es-es/sql/t-sql/language-elements/set-operators-union-transact-sql?view=sql-server-ver15

    • Marcado como respuesta Dannycv012 martes, 25 de febrero de 2020 13:49
    sábado, 22 de febrero de 2020 6:08
  • Javier muchas gracias 

    Daniel

    martes, 25 de febrero de 2020 13:49
  • De nada
    martes, 25 de febrero de 2020 15:40