MySQL - Ayuda para crear Vista con Select Count

 
Vista:
sin imagen de perfil

Ayuda para crear Vista con Select Count

Publicado por raul (3 intervenciones) el 19/03/2015 01:08:16
Necesito crear una vista que muestre las ventas por vendedor por producto y por rango de fechas.

Tengo 2 tablas, pdv_1 y pdv_2, que registran ventas de 4 productos diferentes. Una tabla para cada punto de venta

id | usuario | producto | fecha

1 | juan pe| produc_1 | 02-03-2015
2 | jose ed| produc_2 | 03-03-2015
3 | jose ed| produc_3 | 02-03-2015
4 | juan pe| produc_4 | 02-03-2015

Necesito crear una Vista que muestre el total de ventas por producto, sumando las dos tablas, por usuario y el rango de fechas que seleccione el usuario del sistema.

Debería que dar mas o menos así:

nombre | produc_1 | produc_2 | produc_3 | produc_4 | total |

juan pe | 4 ventas | 7 ventas | 10 ventas | 12 ventas| 43 ventas |
jose ed| 9 ventas | 15 ventas | 16 ventas | 22 ventas| 62 ventas |

Estoy tratando de crear la vista pero me da errores de sintaxis:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CREATE OR REPLACE VIEW metas AS
SELECT user.username FROM user, auth_assignment
WHERE user.id = auth_assignment.user_id
AND auth_assignment.item_name = 'Ejecutivo', // Elijo los usuarios que son ejecutivos del sistema de usuarios
 
 (SELECT SUM(T1.T2) total_produc_1 FROM
 (SELECT count(id) T2 FROM pdv_1
 WHERE producto= "produc_1"
 union all SELECT count(id)
 FROM pdv_2 WHERE producto= "produc_1") T1 ) AS producto_1,
 
 (SELECT SUM(T1.T2) total_produc_2 FROM
 (SELECT count(id) T2 FROM pdv_1
 WHERE producto= "produc_2"
 union all SELECT count(id)
 FROM pdv_2 WHERE producto= "produc_2") T1 ) AS producto_2,
 
etc...


No puedo crear la tabla vista ni asociar los resultados al usuario.

Agradeceré cualquier idea o codigo de ejemplo.

Cordiales Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Ayuda para crear Vista con Select Count

Publicado por eyanez (17 intervenciones) el 19/03/2015 13:17:29
Hola, haz un procedimiento almacenado
1) Recorre la tabla y obtienes los productios
2) Creas una tabla temporal con estos campos (productos)
3) Crear un select que totalice, usuario, producto y agregas el registro o lo actualizas, usando insert on duplicate key
4) Haces un select de la tabla temporal
5) Drop de la tabla temporal
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda para crear Vista con Select Count

Publicado por raul (3 intervenciones) el 19/03/2015 14:39:19
Ok. Trataré de hacerlo así, Piensas que es mejor que crear una vista? Y para el tema del rango de fechas ¿Como debería enfocarlo? No me manejop bien con las procedures.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda para crear Vista con Select Count

Publicado por eyanez (17 intervenciones) el 19/03/2015 15:22:35
Hacerlo con vista de campos fijos es hacerlo estatico no dinamico, por eso te recomiendo generarlo por un procedure para obtener un reporte puntual

También podrias pensar en hacer una especie de vista materializada (otros db tienen el concepto como tal) con triggers, cuando agregas un producto agregas un campo, y cuando haces un transaccion haces un insert (on duplicate key) por ejemplo, lo que no recuerdo es que si puedes modificar la estructura del view desde un trigger habria que revisar la documentación

la tabla para la cuasi-vista materializada seri incialmente seria algo como
user_id, fecha y agregando luego los productos

asi podria saber la venta de producto por fechas y realizar filtros.

Hay cosas que no recuerdo tengo varios años que me certifique en MySQL, ahora estoy volviendo a estudiar para actualizarlas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda para crear Vista con Select Count

Publicado por raul (3 intervenciones) el 19/03/2015 15:27:57
Entiendo, podría crear una tabla con los campos que mostrará el reporte en excel y llenarla con triggers. Si funciona sería perfecto. Lo probaré y te comento.

Gracias por tu ayuda.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda para crear Vista con Select Count

Publicado por ROBERTO (5 intervenciones) el 24/03/2015 22:29:25
en ésta pagina está lo que necesitas para generar pivots...http://buysql.com/mysql/14-how-to-automate-pivot-tables.html

en la ultima columna solo debe ser un sum

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar