Ver Mensaje Individual
  #8 (permalink)  
Antiguo 26/10/2008, 06:04
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 17 años
Puntos: 300
Respuesta: agrupar por mes de 2 tablas diferentes..URGENTE

Como no trabajo con Store Procedures, te hago una propuesta con la creación de una tabla temporal. Yo trabajo en MysQL y si lanzas esto:
Código sql:
Ver original
  1. CREATE TEMPORARY TABLE tmp engine = memory SELECT YEAR(fecha_compra) año, MONTH(fecha_compra) mes FROM producto UNION DISTINCT SELECT YEAR(fecha_alta), MONTH(fecha_alta) FROM usuarios ORDER BY año, mes;
  2. SELECT * FROM tmp;
  3.  
  4. SELECT tmp.año,
  5. CASE WHEN tmp.mes =1
  6. THEN "enero"
  7. WHEN tmp.mes =2
  8. THEN "febrero"
  9. WHEN tmp.mes =3
  10. THEN "marzo"
  11. WHEN tmp.mes =4
  12. THEN "abril"
  13. WHEN tmp.mes =5
  14. THEN "mayo"
  15. WHEN tmp.mes =6
  16. THEN "junio"
  17. WHEN tmp.mes =7
  18. THEN "julio"
  19. WHEN tmp.mes =8
  20. THEN "agosto"
  21. WHEN tmp.mes =9
  22. THEN "septiembre"
  23. WHEN tmp.mes =10
  24. THEN "octubre"
  25. WHEN tmp.mes =11
  26. THEN "noviembre"
  27. WHEN tmp.mes =12
  28. THEN "diciembre"
  29. ELSE "esto no es un mes"
  30. END AS mes, IFNULL( t1.totalp, 0 ) AS compras, IFNULL( t2.totalus, 0 ) AS altas
  31. FROM tmp
  32. LEFT JOIN (
  33.  
  34. SELECT YEAR( fecha_compra ) anyo, MONTH( fecha_compra ) mes, COUNT( * ) totalp
  35. FROM producto
  36. GROUP BY YEAR( fecha_compra ) , MONTH( fecha_compra )
  37. )t1 ON tmp.año = t1.anyo
  38. AND tmp.mes = t1.mes
  39. LEFT JOIN (
  40.  
  41. SELECT YEAR( fecha_alta ) anyo, MONTH( fecha_alta ) mes, COUNT( * ) totalus
  42. FROM usuarios
  43. GROUP BY YEAR( fecha_alta ) , MONTH( fecha_alta )
  44. )t2 ON tmp.año = t2.anyo
  45. AND tmp.mes = t2.mes
  46. ORDER BY tmp.año, tmp.mes

A mí me ha funcionado en un MySQL 5.0. Creo una tabla temporal que cargo con los datos de año y mes de las otras tablas, con union distinct para evitar las repeticiones de meses; luego hago mediante left join las uniones.
Respecto a lo otro, es decir, a que aparecieran todos los meses, insisto en que tendrías que hacerlo con programación.