Comunidad oficial de diseñadores web, web developers y Webmasters. Aqui podemos tratar temas actuales sobre diseño y tecnología. Podemos compartir y actualizarnos. Flash, PHP, ASP, Java, HTML, CSS, MySQL, CMS, etc. Unite YA y lee los Sticky
Ver más- 17,201 Miembros
- 12,950 Temas
- 4,967 Seguidores
[Solucionado] Problema con consulta MYSQL
Hola, tengo un lío con una consulta MYSQL.Necesito mostrar en una página una suma total de cuanto se genero en el mes y debajo de eso, mostrar un detalle de cuanto genero cada producto en ese mes.
Ejemplo:
Mayo 2012 - 120 ventas - $20.000,00
15 Notebook - $10.000,00
22 Parlantes - $2.000,00
10 Monitores - $8.000,00
Abril 2012 - 150 ventas - $35.000,00
15 Notebook - $10.000,00
22 Parlantes - $2.000,00
10 Monitores - $8.000,00
Este es el SQL que me mande pero creo que hice cualquiera :S
(SELECT SUM(monto) AS total_monto, SUM(ventas) AS total_ventas
FROM $facturas
WHERE id_usuario = $usuario
GROUP BY fecha DESC)
UNION ALL
(SELECT * FROM $facturas
LEFT JOIN $producto
ON ($facturas.id_producto = $producto.id)
WHERE $facturas.id_usuario = $usuario)
Solución:
Realizar las consultas por separado.
SELECT *, SUM($facturas.monto) AS total_monto, SUM($facturas.ventas) as total_ventas
FROM $facturas
WHERE id_usuario = $usuario
AND moneda = $moneda
GROUP BY fecha
ORDER BY fecha DESC
SELECT *, $facturas.fecha AS fecha_factura, $facturas.ventas AS ventas_totales, $facturas.moneda AS moneda_factura
FROM $facturas
LEFT JOIN $producto
ON ($facturas.id_producto = $producto.id)
WHERE $facturas.id_usuario = %d
- 0Calificación
- 0Seguidores
- 155Visitas
- 0Favoritos
Global
Argentina
Chile
Colombia
España
México
Perú
Uruguay
Venezuela
7 comentarios
(SELECT SUM(monto) AS total_monto, SUM(ventas) AS total_ventas
FROM $facturas
WHERE id_usuario = $usuario
GROUP BY fecha DESC)
UNION ALL (
SELECT *
FROM $facturas
LEFT JOIN $producto
ON ($facturas.id_producto = $producto.id)
WHERE $facturas.id_usuario = $usuario)
vez? así queda un poco más lindo, por lo menos para mi y lo puedo entender un poco mejor.
en la cláusula GROUP BY al agrupar por fecha solamente estás agrupando por día. si quieres agrupar por mes deberías hacer GROUP BY MONTH(fecha) y en la cláusula WHERE debes poner que año. ejemplo
(SELECT SUM(monto) AS total_monto, SUM(ventas) AS total_ventas
FROM $facturas
WHERE id_usuario = $usuario
AND YEAR(fecha) = 2008
AND MONTH(fecha) = 3
GROUP BY MONTH(fecha) DESC)
UNION ALL (
SELECT *
FROM $facturas
LEFT JOIN $producto
ON ($facturas.id_producto = $producto.id)
WHERE $facturas.id_usuario = $usuario)
en ese ejemplo obtenés la ventas del mes de marzo del año 2008.
creo que se podía filtrar de otra forma el mes y año pero no recuerdo a esta hora.
salu2
GROUP BY YEAR(fecha), MONTH(fecha)
y del where sacar la condición del mes.
Ahora que reviso bien no entiendo por qué haces un UNION?
Hola gastondla35, gracias por responder.
Lo que intento hacer con UNION es que me muestre por un lado, la suma de dinero de todos los productos por mes y por otro lado que me muestre cuando vendió cada producto en ese mes.
De esta forma:
Mayo 2012 - 120 ventas - $20.000,00
15 Notebook - $10.000,00
22 Parlantes - $2.000,00
10 Monitores - $8.000,00
Tambien podes hacer una sola consulta, la del detalle, y hacer la suma por codigo php, en lugar de mysql.
Creo que me voy a decantar por hacer dos consultas.
Gracias a los que me respondieron
salu2