Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Restar Ventas de una Vista

Estas en el tema de Restar Ventas de una Vista en el foro de Mysql en Foros del Web. Que tal amigos, soy nuevo en el foro y espero y me puedan ayudar con mi problema que es el siguiente: Tengo dos vistas una ...
  #1 (permalink)  
Antiguo 03/07/2013, 10:39
Avatar de fidl117  
Fecha de Ingreso: julio-2013
Ubicación: Mexico
Mensajes: 6
Antigüedad: 11 años, 4 meses
Puntos: 0
Pregunta Restar Ventas de una Vista

Que tal amigos, soy nuevo en el foro y espero y me puedan ayudar con mi problema que es el siguiente:

Tengo dos vistas una es:

Código PHP:
CREATE VIEW V1 (V1_VENDEDORVENDEDORESVENTAS,FECHA) AS SELECT  DOCTOS_VE.VENDEDOR_IDVENDEDORES.NOMBREsum (DOCTOS_VE.IMPORTE_NETO *  DOCTOS_VE.TIPO_CAMBIO) , DOCTOS_VE.FECHA FROM VENDEDORES INNER JOIN  DOCTOS_VE ON VENDEDORES.VENDEDOR_ID DOCTOS_VE.VENDEDOR_ID
WHERE   
((DOCTOS_VE.TIPO_DOCTO 'F') OR (DOCTOS_VE.TIPO_DOCTO 'D')) AND  (DOCTOS_VE.ESTATUS <> 'C'group by VENDEDORES.NOMBRE ,  DOCTOS_VE.FECHADOCTOS_VE.VENDEDOR_ID 
y la otra es:

Código PHP:
CREATE VIEW V2 (V1_VENDEDORVENDEDORESVENTAS,FECHA) AS SELECT DOCTOS_VE.VENDEDOR_IDVENDEDORES.NOMBREsum (DOCTOS_VE.IMPORTE_NETO DOCTOS_VE.TIPO_CAMBIO) , DOCTOS_VE.FECHA FROM VENDEDORES INNER JOIN DOCTOS_VE ON VENDEDORES.VENDEDOR_ID DOCTOS_VE.VENDEDOR_ID
WHERE 
(DOCTOS_VE.TIPO_DOCTO 'D') AND (DOCTOS_VE.ESTATUS <> 'N'group by VENDEDORES.NOMBRE DOCTOS_VE.FECHADOCTOS_VE.VENDEDOR_ID 
bueno la primera suma facturas y devoluciones, y la segunda suma solo las devoluciones

lo que quiero hacer es restar solo las devoluciones de la vista1, pero antes quiero ver si me arroja las cantidades correctas
para eso trate con lo siguiente pero me genera un error :

Engine Code : 335544569
Engine Message :
Dynamic SQL Error
SQL error code = -206
Column unknown
V2.V1_VENDEDOR
At line 12, column 225

Código PHP:
select VENDEDORESSUM(DISTINCT VENTASfrom v1 left JOIN (select VENDEDORESSUM (DISTINCT VENTAS) as TOTAL FROM V2 WHERE FECHA BETWEEN '01.05.2013' AND '31.05.2013' GROUP BY VENDEDORESV2 ON V1.V1_VENDEDOR V2.V1_VENDEDOR  GROUP BY VENDEDORES 
no se si me he explicado bien, pero apenas ando en las andadas de BD, espero y me puedan ayudar
  #2 (permalink)  
Antiguo 04/07/2013, 01:48
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Restar Ventas de una Vista

Código MySQL:
Ver original
  1. CREATE VIEW V1 (V1_VENDEDOR, VENDEDORES, VENTAS,FECHA) AS
  2. SELECT  DOCTOS_VE.VENDEDOR_ID,
  3.         VENDEDORES.NOMBRE,
  4.         sum (DOCTOS_VE.IMPORTE_NETO *  DOCTOS_VE.TIPO_CAMBIO) ,
  5.         DOCTOS_VE.FECHA
  6. FROM VENDEDORES INNER JOIN  DOCTOS_VE ON VENDEDORES.VENDEDOR_ID = DOCTOS_VE.VENDEDOR_ID
  7. WHERE   ((DOCTOS_VE.TIPO_DOCTO = 'F') OR (DOCTOS_VE.TIPO_DOCTO = 'D'))
  8.         AND  (DOCTOS_VE.ESTATUS <> 'C')
  9. group by VENDEDORES.NOMBRE ,  DOCTOS_VE.FECHA, DOCTOS_VE.VENDEDOR_ID;
  10.  
  11. CREATE VIEW V2 (V1_VENDEDOR, VENDEDORES, VENTAS,FECHA) AS
  12. SELECT DOCTOS_VE.VENDEDOR_ID,
  13.        VENDEDORES.NOMBRE,
  14.        sum (DOCTOS_VE.IMPORTE_NETO * DOCTOS_VE.TIPO_CAMBIO) ,
  15.        DOCTOS_VE.FECHA
  16. FROM VENDEDORES INNER JOIN DOCTOS_VE ON VENDEDORES.VENDEDOR_ID = DOCTOS_VE.VENDEDOR_ID
  17. WHERE (DOCTOS_VE.TIPO_DOCTO = 'D')
  18.   AND (DOCTOS_VE.ESTATUS <> 'N')
  19. group by VENDEDORES.NOMBRE , DOCTOS_VE.FECHA, DOCTOS_VE.VENDEDOR_ID;
  20.  
  21.  
  22. select v1.VENDEDORES,
  23.        SUM(DISTINCT v1.VENTAS)
  24. from v1 left JOIN (select V1_VENDEDOR
  25.                           VENDEDORES,
  26.                           SUM (DISTINCT VENTAS) as TOTAL
  27.                    FROM V2
  28.                    WHERE FECHA BETWEEN '01.05.2013' AND '31.05.2013'
  29.                    GROUP BY VENDEDORES) sbcV2
  30.            ON V1.V1_VENDEDOR = sbcV2.V1_VENDEDOR
  31. GROUP BY v1.VENDEDORES;

No he analizado si las vistas dan lo que dices, me falta información.

En cuanto a la query tienes dos errores,

primero: usas el nombre de una vista como alias de una subconsulta

Código MySQL:
Ver original
  1. select VENDEDORES,
  2.            SUM (DISTINCT VENTAS) as TOTAL
  3.   FROM V2
  4.   WHERE FECHA BETWEEN '01.05.2013' AND '31.05.2013'
  5.    GROUP BY VENDEDORES) V2

mejor no hacerlo, lo corrijo por "sbcV2"

Código MySQL:
Ver original
  1. select VENDEDORES,
  2.            SUM (DISTINCT VENTAS) as TOTAL
  3.   FROM V2
  4.   WHERE FECHA BETWEEN '01.05.2013' AND '31.05.2013'
  5.    GROUP BY VENDEDORES) sbcV2

El segundo error se te hara evidente en el momento que corrijas el primero, puesto que el mensaje de error ahora seria

Engine Code : 335544569
Engine Message :
Dynamic SQL Error
SQL error code = -206
Column unknown <<<< Columna desconocida
sbcV2.V1_VENDEDOR

At line 12, column 225

y te darias cuenta en seguida que ese campo no existe en la subquery sbcV2, si esta en la vista V2 pero no lo has seleccionado en la subquery que tambien llamabas V2.

SUM (DISTINCT VENTAS) as TOTAL el campo que ahora seria sbcV2.TOTAL no se usa en la consulta???
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 04/07/2013 a las 01:55
  #3 (permalink)  
Antiguo 04/07/2013, 11:52
Avatar de fidl117  
Fecha de Ingreso: julio-2013
Ubicación: Mexico
Mensajes: 6
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Restar Ventas de una Vista

Cita:
Iniciado por quimfv Ver Mensaje
Código MySQL:
Ver original
  1. CREATE VIEW V1 (V1_VENDEDOR, VENDEDORES, VENTAS,FECHA) AS
  2. SELECT  DOCTOS_VE.VENDEDOR_ID,
  3.         VENDEDORES.NOMBRE,
  4.         sum (DOCTOS_VE.IMPORTE_NETO *  DOCTOS_VE.TIPO_CAMBIO) ,
  5.         DOCTOS_VE.FECHA
  6. FROM VENDEDORES INNER JOIN  DOCTOS_VE ON VENDEDORES.VENDEDOR_ID = DOCTOS_VE.VENDEDOR_ID
  7. WHERE   ((DOCTOS_VE.TIPO_DOCTO = 'F') OR (DOCTOS_VE.TIPO_DOCTO = 'D'))
  8.         AND  (DOCTOS_VE.ESTATUS <> 'C')
  9. group by VENDEDORES.NOMBRE ,  DOCTOS_VE.FECHA, DOCTOS_VE.VENDEDOR_ID;
  10.  
  11. CREATE VIEW V2 (V1_VENDEDOR, VENDEDORES, VENTAS,FECHA) AS
  12. SELECT DOCTOS_VE.VENDEDOR_ID,
  13.        VENDEDORES.NOMBRE,
  14.        sum (DOCTOS_VE.IMPORTE_NETO * DOCTOS_VE.TIPO_CAMBIO) ,
  15.        DOCTOS_VE.FECHA
  16. FROM VENDEDORES INNER JOIN DOCTOS_VE ON VENDEDORES.VENDEDOR_ID = DOCTOS_VE.VENDEDOR_ID
  17. WHERE (DOCTOS_VE.TIPO_DOCTO = 'D')
  18.   AND (DOCTOS_VE.ESTATUS <> 'N')
  19. group by VENDEDORES.NOMBRE , DOCTOS_VE.FECHA, DOCTOS_VE.VENDEDOR_ID;
  20.  
  21.  
  22. select v1.VENDEDORES,
  23.        SUM(DISTINCT v1.VENTAS)
  24. from v1 left JOIN (select V1_VENDEDOR
  25.                           VENDEDORES,
  26.                           SUM (DISTINCT VENTAS) as TOTAL
  27.                    FROM V2
  28.                    WHERE FECHA BETWEEN '01.05.2013' AND '31.05.2013'
  29.                    GROUP BY VENDEDORES) sbcV2
  30.            ON V1.V1_VENDEDOR = sbcV2.V1_VENDEDOR
  31. GROUP BY v1.VENDEDORES;

No he analizado si las vistas dan lo que dices, me falta información.

En cuanto a la query tienes dos errores,

primero: usas el nombre de una vista como alias de una subconsulta

Código MySQL:
Ver original
  1. select VENDEDORES,
  2.            SUM (DISTINCT VENTAS) as TOTAL
  3.   FROM V2
  4.   WHERE FECHA BETWEEN '01.05.2013' AND '31.05.2013'
  5.    GROUP BY VENDEDORES) V2

mejor no hacerlo, lo corrijo por "sbcV2"

Código MySQL:
Ver original
  1. select VENDEDORES,
  2.            SUM (DISTINCT VENTAS) as TOTAL
  3.   FROM V2
  4.   WHERE FECHA BETWEEN '01.05.2013' AND '31.05.2013'
  5.    GROUP BY VENDEDORES) sbcV2

El segundo error se te hara evidente en el momento que corrijas el primero, puesto que el mensaje de error ahora seria

Engine Code : 335544569
Engine Message :
Dynamic SQL Error
SQL error code = -206
Column unknown <<<< Columna desconocida
sbcV2.V1_VENDEDOR

At line 12, column 225

y te darias cuenta en seguida que ese campo no existe en la subquery sbcV2, si esta en la vista V2 pero no lo has seleccionado en la subquery que tambien llamabas V2.

SUM (DISTINCT VENTAS) as TOTAL el campo que ahora seria sbcV2.TOTAL no se usa en la consulta???
Sí, puedes ayudarme a solucionar mi problema!!!
  #4 (permalink)  
Antiguo 05/07/2013, 07:40
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Restar Ventas de una Vista

No he analizado si las vistas dan lo que dices, me falta información.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Etiquetas: firebird, subconsultas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:39.