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

Consulta para obtener los ultimos seis meses

Estas en el tema de Consulta para obtener los ultimos seis meses en el foro de Mysql en Foros del Web. Estimados amigos, estoy viendo si es posible hacer una consulta de una forma más "elegante" la idea es obtener el total de compras por mes ...
  #1 (permalink)  
Antiguo 07/05/2013, 21:04
Avatar de xalupeao  
Fecha de Ingreso: mayo-2008
Ubicación: Santiago, Chile
Mensajes: 749
Antigüedad: 15 años, 11 meses
Puntos: 12
Consulta para obtener los ultimos seis meses

Estimados amigos,

estoy viendo si es posible hacer una consulta de una forma más "elegante"

la idea es obtener el total de compras por mes (solo los ultimos 6 meses) del año actual, entonces hasta ahora tengo lo siguiente:

Código MySQL:
Ver original
  1. SELECT SUM(compras) as total, MONTH(date) as mes
  2. FROM `data`

la idea agregarle las lineas que me permitan obtener solo los ultimos 6 meses. Lo malo es que si no existen datos para un mes, esté no se vera en la salida, la idea es que se muestre y que diga en su total 0.


alguien me podria orientar en cual seria la mejor forma.


Saludos.
__________________
Hosting en Chile en Silverhost - La solución en Hosting en Chile.

Última edición por gnzsoloyo; 08/05/2013 a las 03:58 Razón: Poco legible
  #2 (permalink)  
Antiguo 08/05/2013, 01:18
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Consulta para obtener los ultimos seis meses

Prueba HAVING (SUM(compras) = 0 OR SUM(compras) !=0) o similar. Comprueba en el manual sintaxis de HAVING.
Salu2
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 08/05/2013, 02:54
Avatar de zarwar  
Fecha de Ingreso: mayo-2013
Ubicación: Madrid
Mensajes: 77
Antigüedad: 10 años, 11 meses
Puntos: 4
Respuesta: Consulta para obtener los ultimos seis meses

El problema es que no existen registros, por lo que no puedes obtener nada de un valor, que no existe.

Tendrías, que cruzar con una tabla, que tenga valores del 1 al 12 haciendo un outer join.

Espero aberte servido de ayuda.
__________________
Entra en mi blog sobre base de datos Oracle:
http://mundodb.es
  #4 (permalink)  
Antiguo 08/05/2013, 04:00
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Consulta para obtener los ultimos seis meses

Cita:
Tendrías, que cruzar con una tabla, que tenga valores del 1 al 12 haciendo un outer join.
La idea es esa, pero la cláusula en MySQL es LEft JOIN, no OUTER JOIN. OUTER es de SQL Server, y si bien MySQL puede reconocerla es mejor no generar confusiones.
Además la parsea como LEFT JOIN.... ¿Para qué escribirla de otro modo?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 08/05/2013, 04:54
Avatar de zarwar  
Fecha de Ingreso: mayo-2013
Ubicación: Madrid
Mensajes: 77
Antigüedad: 10 años, 11 meses
Puntos: 4
Respuesta: Consulta para obtener los ultimos seis meses

Tienes razón gnzsoloyo, es que mis origenes en bases de datos son sobre Oracle y me he lanzado. Como bien dices en MySQL lo correcto sería hablar de Left Join.
__________________
Entra en mi blog sobre base de datos Oracle:
http://mundodb.es

Etiquetas: meses, select
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 11:47.