none
consulta en sql y MySql RRS feed

  • Pregunta

  • hola buenos dias tengo un problema al hacer una consulta debo hacerlo con left join por que asi me lo piden, y la sigiente subconsulta debe de ir dentro de un left join

    left join (
    
    					
    
    								 SELECT venta.sucursal, count(distinct(venta.venta)) as nota,ISNULL(VENTA.vendedor,"NO") AS vendedor
    										from  openquery(SMYSQLCIPSIS, 
    										'select v.sucursal, v.venta, vendedor
    										   FROM VENTA V 
    										   INNER JOIN DET_VT D 
    										   ON V.SUCURSAL = D.SUCURSAL
    										   AND V.VENTA = D.VENTA 
    										   WHERE FECHA between "@fechaIni" and " @fechaFin" 
    										   AND STATUS <> "ZC"' ) as venta
    										   where vendedor <> "NO"
    									group by venta.sucursal, venta.venta,  venta.vendedor
    									--order by venta.sucursal, nota, vendedor
    								) ventas 
    						on ventas.vendedor = e.vendedor 

    el problema es al momento de mandarle las fechas a la parte del codigo de MySQL  (@fechaIni y @fechaFin) usal mente lo hacia asi :  " ' +@fechaIni + ' " pero esto solo funciona si lo hago con set @consulta = (el codigo anterior)

    exec(@consulta)

    pero dentro del left join no sirve o no se usarlo, pero a fuerzas tengo que usar un left join ya que son barias tablas conectadas entre si, si pudieran ayudarme se los agradecería mucho 

    sábado, 1 de abril de 2017 16:35

Respuestas

  • yp_holi,

    Corrobora si la consulta que está contenida en la cadena es correcta, intenta ejecutarla bajo las formas de MySql:

    SET @fechaIni = "2017-01-01"
    SET @fechaIni = "2017-01-30"
    
    SET @ConsultaSql =
        CONCAT('SELECT v.sucursal, v.venta, vendedor
    	   FROM VENTA V 
    	   INNER JOIN DET_VT D ON V.SUCURSAL = D.SUCURSAL
    		  AND V.VENTA = D.VENTA 
    	   WHERE FECHA BETWEEN "', @fechaIni, '" AND "', @fechaFin,
    	   '" AND STATUS <> "ZC"'))
    
    SELECT @ConsultaSql;
    GO


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    sábado, 1 de abril de 2017 22:45

Todas las respuestas

  • yp_holi,

    Intenta concatenar la cadena -que contiene la consulta sql- con los parámetros mediante la función CONCAT() (estándar ANSI)

    LEFT JOIN 
        (
    	   SELECT 
    		  venta.sucursal, COUNT(DISTINCT(venta.venta)) AS nota,
    		  ISNULL(VENTA.vendedor, "NO") AS vendedor
    	   FROM  OPENQUERY(SMYSQLCIPSIS, 
    		  CONCAT('SELECT v.sucursal, v.venta, vendedor
    		  FROM VENTA V 
    		  INNER JOIN DET_VT D ON V.SUCURSAL = D.SUCURSAL
    			 AND V.VENTA = D.VENTA 
    		  WHERE FECHA BETWEEN "', @fechaIni, '" AND "', @fechaFin,
    		  '" AND STATUS <> "ZC"')) AS venta
    	   WHERE vendedor <> "NO"
    	   GROUP BY venta.sucursal, venta.venta,  venta.vendedor
        ) ventas ON ventas.vendedor = e.vendedor 


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    sábado, 1 de abril de 2017 17:28
  • lo acabo de probar pero no funciona, marca error de sintaxis
    sábado, 1 de abril de 2017 19:04
  • lo acabo de probar pero no funciona, marca error de sintaxis

    ¿Podrías indicar cual es el error que obtienes?, yo no tengo forma de corroborar la consulta.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    sábado, 1 de abril de 2017 19:14
  • yp_holi,

    Lo siento, no tengo como corroborar lo que mencionas y a simple vista no veo algo que pueda estar produciendo error de sintaxis (sólo me he fijado en la parte que me ha tocado implementar que entiendo es donde obtienes el error)

    sábado, 1 de abril de 2017 19:36
  • yp_holi,

    Corrobora si la consulta que está contenida en la cadena es correcta, intenta ejecutarla bajo las formas de MySql:

    SET @fechaIni = "2017-01-01"
    SET @fechaIni = "2017-01-30"
    
    SET @ConsultaSql =
        CONCAT('SELECT v.sucursal, v.venta, vendedor
    	   FROM VENTA V 
    	   INNER JOIN DET_VT D ON V.SUCURSAL = D.SUCURSAL
    		  AND V.VENTA = D.VENTA 
    	   WHERE FECHA BETWEEN "', @fechaIni, '" AND "', @fechaFin,
    	   '" AND STATUS <> "ZC"'))
    
    SELECT @ConsultaSql;
    GO


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    sábado, 1 de abril de 2017 22:45