0

Sucede que tengo una base de datos en la que las tablas que ocupo son amdAlmacenes, donde guardo idalmacen, codigoalmacen; así mismo, existe otra tabla de movimientos, donde se cruzan los productos y los almacenes, entre otros datos.

Para mayor facilidad cree un stored procedure donde hice la siguiente consulta:

@PARAM1 nvarchar(30),
@PARAM2 nvarchar(30),
@PARAM3 nvarchar(30),
@PARAM4 nvarchar(30),
@PARAM5 nvarchar(30)
AS 
SELECT [admAlmacenes].[CCODIGOALMACEN] AS [CODIGO DEL PROYECTO]
      ,[admProductos].[CNOMBREPRODUCTO] AS [TIPO DE PRODUCTO]
      ,[admMovimientos].[CPRECIO] AS [PRECIO]
      ,[admMonedas].[CCLAVESAT] AS [MONEDA]
      ,[admMovimientos].[CFECHA] AS [FECHA]
      ,[admDocumentos].[CRAZONSOCIAL] AS [PROVEEDOR]

   FROM [dbo].[admMovimientos] 
       INNER JOIN ( SELECT
                           [CIDPRODUCTO],
                           [CNOMBREPRODUCTO]
                           FROM [admProductos]
                   ) [admProductos]
                   ON [admMovimientos].[CIDPRODUCTO] = [admProductos].[CIDPRODUCTO]
    
        INNER JOIN ( SELECT
                            [CIDALMACEN],
                            [CCODIGOALMACEN]
                           FROM [admAlmacenes]
                   ) [admAlmacenes]
                   ON [admMovimientos].[CIDALMACEN] = [admAlmacenes].[CIDALMACEN]

        INNER JOIN ( SELECT
                           [CIDDOCUMENTO]
                           ,[CIDMONEDA]
                           ,[CRAZONSOCIAL]
                           FROM [admDocumentos]
                   ) [admDocumentos]
                   ON [admMovimientos].[CIDMOVIMIENTO] = [admDocumentos].[CIDDOCUMENTO]

        INNER JOIN ( SELECT 
                                [CIDMONEDA],
                                [CCLAVESAT]
                               FROM [admMonedas]
                       ) [admMonedas]
                       ON [admDocumentos].[CIDMONEDA] = [admMonedas].[CIDMONEDA]


          WHERE (@PARAM1 IS NULL OR [CCODIGOALMACEN] LIKE CONCAT('%',@PARAM1,'%')) 
            AND (@PARAM2 IS NULL OR [CNOMBREPRODUCTO] LIKE CONCAT('%',@PARAM2,'%'))  
            AND (@PARAM3 IS NULL OR [admMovimientos].[CTEXTOEXTRA1] like CONCAT('%',@PARAM3,'%')) 
            AND (@PARAM4 IS NULL OR [admMovimientos].[CTEXTOEXTRA3] like CONCAT('%',@PARAM4,'%')) 
            AND (@PARAM5 IS NULL OR [admDocumentos].[CRAZONSOCIAL] like CONCAT('%',@PARAM5,'%')) 

            ORDER BY [FECHA] DESC;

Mi problema esta que no me aparecen ciertos datos, por ejemplo si busco el almacen 210 no me aparece, sin embargo cuando busco ese mismo almacen en las tablas de admMovimientos y admAlmacenes si me aparece, no se si es por que mi procedimiento almacenado esta mal

¿Alguien me puede ayudar? ):

Usuario7
  • 53
  • 6
  • si hay una tabla que no tenga registros relacionados, esa fila no se va a mostrar.. tal vez querias un left join? – gbianchi Apr 30 '21 at 01:12
  • y con el left join se mostrarian esos mismos campos? o tendria que hacer otra consulta? – Usuario7 Apr 30 '21 at 01:42
  • 1
    te recomendaria leer sobre joins y sus tipos. Por lo que me estas preguntando, quiere decir que no sabes como funciona... – gbianchi Apr 30 '21 at 01:42
  • 1
    En esta respuesta acá mismo puedes hacerte una idea: https://es.stackoverflow.com/a/40/21 – jachguate Apr 30 '21 at 02:17

0 Answers0