Foros del Web » Programando para Internet » PHP »

Contar Registros por mes

Estas en el tema de Contar Registros por mes en el foro de PHP en Foros del Web. hola amigo saludos desde Venezuela, me encuentro por aqui para pedirle ayuda por favor si podrian echarmela, lo que necesito es contar para saber cuantos ...
  #1 (permalink)  
Antiguo 07/11/2015, 00:11
 
Fecha de Ingreso: marzo-2012
Ubicación: El Vigia Edo Merida
Mensajes: 147
Antigüedad: 12 años, 1 mes
Puntos: 1
Sonrisa Contar Registros por mes

hola amigo saludos desde Venezuela, me encuentro por aqui para pedirle ayuda por favor si podrian echarmela, lo que necesito es contar para saber cuantos registros tengo por mes, la consulta haciendola de manera individual me sale bien, pero no quisiera hacer 12 consultas una por cada mes, y quisiera es poder hacer en una sola para capturar el valor poer mes, e leido sobre UNION ALL pero no entiendo bien la funcion en aqui trato de hacer esto, espero me puedan guiar o al menos decir q eso que intento hacer es imposible

Código SQL:
Ver original
  1. SELECT COUNT(*) AS enero FROM consultas_medicas WHERE YEAR(ingreso_consulta) = '".date('Y')."' AND MONTH(ingreso_consulta) = '01'
  2. UNION ALL SELECT COUNT(*) AS febrero FROM consultas_medicas WHERE YEAR(ingreso_consulta) = '".date('Y')."' AND MONTH(ingreso_consulta) = '02'
  3. UNION ALL SELECT COUNT(*) AS marzo FROM consultas_medicas WHERE YEAR(ingreso_consulta) = '".date('Y')."' AND MONTH(ingreso_consulta) = '03'
  4. UNION ALL SELECT COUNT(*) AS abril FROM consultas_medicas WHERE YEAR(ingreso_consulta) = '".date('Y')."' AND MONTH(ingreso_consulta) = '04'"

Última edición por gnzsoloyo; 07/11/2015 a las 03:34
  #2 (permalink)  
Antiguo 07/11/2015, 17:40
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: Contar Registros por mes

Código MySQL:
Ver original
  1. SELECT MONTH(ingreso_consulta) Mes, COUNT(*) CantMes
  2. FROM consultas_medicas
  3. WHERE YEAR(ingreso_consulta) = YEAR(CURDATE())
  4.     AND MONTH(ingreso_consulta) BETWEEN 1 and 4
  5. GROUP BY MONTH(ingreso_consulta)
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 07/11/2015, 22:09
 
Fecha de Ingreso: marzo-2012
Ubicación: El Vigia Edo Merida
Mensajes: 147
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: Contar Registros por mes

muchas gracias por responder amigo, pero la verdad no entendi bien la consulta que me muestras, los valores de 1 and 4 es desde enero hasta abril verdad, y de q manera obtendria yo la variable de esa consulta, la verdad no entiendo y disculpa
  #4 (permalink)  
Antiguo 07/11/2015, 22:14
 
Fecha de Ingreso: marzo-2012
Ubicación: El Vigia Edo Merida
Mensajes: 147
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: Contar Registros por mes

ya que lo que quiero es lograr capturar el valor de registros por mes en cada variable separada por mes, es decir la variable $row['enero'] hasta $row['abril']
  #5 (permalink)  
Antiguo 07/11/2015, 22:34
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: Contar Registros por mes

En las consultas en SQL a la base no existen "variables", existen columnas y registros. Una query devuelve una tabla de resultado, en este caso con un registro por numero de mes (que no corresponde a un "01" o lo que fuese, porque lo que devuelve es un número y por tanto el cero a la izquierda no existe).
Si lo que quieres es saber cómo tomar con PHP los valores devueltos por MySQL, estás en el foro equivocado. Los temas de PHP son de programación y por tanto van en el foro de PHP. En este sólo vemos SQL, y administración del servidor de MySQL.
Los temas de programación son OFF TOPIC en los foros de Bases de Datos.

Si tu problema es de SQL y la tabla resultado, por favor, postea un ejemplo (no codificado) de cómo seria el resultado que necesitas obtener.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 07/11/2015, 22:54
 
Fecha de Ingreso: marzo-2012
Ubicación: El Vigia Edo Merida
Mensajes: 147
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: Contar Registros por mes

bueno lo que sucede que e visto este tipo de tema en el foro de php y salen diciendo que es mysql, y lo pasan a myql, por eso coloque aqui este tema, y se muy bien que en mysql no existen variables sino solamente en php, se muy bien que en mysql solo es estructura sql
  #7 (permalink)  
Antiguo 07/11/2015, 22:57
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: Contar Registros por mes

Ok...
Ejemplifica el resultado de lo que quieres conseguir, y explica más claramente a qué te refieres cuando mencionas esas "variables".

Posdata: ¿Probaste el código que te pasé?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 07/11/2015, 23:01
 
Fecha de Ingreso: marzo-2012
Ubicación: El Vigia Edo Merida
Mensajes: 147
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: Contar Registros por mes

si puedes y gusta pasa el tema a php para no tener problemas. Y lo que yo deseo es por ejemplo contar cuantos registros existen en el año actual y por cada mes, es decir ano 2015 y mes enero, hasta diciembre, para asi poder usar cada variable para cada mes y mostrar el resultado de registros encontrados por meses, como dije anteriormente haciendo la consulta individual por mes me sale el resultado, pero lo que quiero es poder hacer todo en una sola consulta, para no tener tantas consultas juntas, en este caso serian 12 consultas una por cada mes
  #9 (permalink)  
Antiguo 07/11/2015, 23:03
 
Fecha de Ingreso: marzo-2012
Ubicación: El Vigia Edo Merida
Mensajes: 147
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: Contar Registros por mes

Por ejemplo quiero mostrar

enero= 3
febrero=1
marzo=2
.........
diciembre=7
  #10 (permalink)  
Antiguo 07/11/2015, 23:06
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: Contar Registros por mes

Primero: La conversión desde el numero de mes devuelvo por la consulta y el nombre del mes, lamentablemente deberás hacerla en PHP, a medida que vayas mostrando los registros. Es más simple y eficiente. MySQL no devuelve los nombres en castellano sino en inglés. Y hace runa función de conversión es en realidad una pérdida de tiempo para la base, cuando el lenguaje de programación lo hace mejor.

Segundo... Eso que quieres es lo que la query que te pasé devuelve: Dos columnas con el numero de mes en la primera y la cantidad en la segunda. Obviamente ni te has tomado el tiempo de probarla, ¿no?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 07/11/2015, 23:13
 
Fecha de Ingreso: marzo-2012
Ubicación: El Vigia Edo Merida
Mensajes: 147
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: Contar Registros por mes

si claro amigo ya lo probe y me muestra unos valores, pero no lo que necesito q me muestra el valor de 4 que son los registros que tengo en mi tabla, pero en si lo que tengo es un registro para el mes de abril, uno para octubre y dos para noviembre, no se si no se sepa explicar bien amigo, por favor pasa el tema a php, te lo agradezco si puedes, aqui muestro la funcion q tengo para la consulta q me explicaste

Código PHP:
Ver original
  1. public function ConsultaMes()
  2.     {
  3.  
  4. $sql = "SELECT MONTH(ingreso_consulta) Mes, COUNT(*) CantMes FROM consultas_medicas WHERE YEAR(ingreso_consulta) = YEAR(CURDATE()) AND MONTH(ingreso_consulta) BETWEEN 1 and 12 GROUP BY MONTH(ingreso_consulta) ORDER BY 1";
  5.         foreach ($this->dbh->query($sql) as $row)
  6.         {
  7.             $this->p[] = $row;
  8.         }
  9.         return $this->p;
  10.         $this->dbh=null;
  11.        
  12.     }
  #12 (permalink)  
Antiguo 08/11/2015, 03:12
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Contar Registros por mes

Saludo
Pues con el query que brinda gnzsoloyo creo que es justo lo que necesitas.

Es decir, con el query inicial se obtiene esto

Código HTML:
Ver original
  1. enero
  2. 2
  3. 1
  4. 1
  5. 1


Pero aquí no se sabe de cuales meses son
(para el ej, son los meses 01,02,10 y 11)

Con el nuevo query, se obtiene esto

Código HTML:
Ver original
  1. Mes  CantMes
  2. 1           2
  3. 2           1
  4. 10         1
  5. 11         1


Una consulta mucho más óptima, y que es a su vez más manejable
para usarla en php, pues basados en el número de mes, mostramos
el mes en su representación alfabética.

¿No es mejor así?

A mí me parece que es lo mejor, sin embargo, revisa con calma
y comentas.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #13 (permalink)  
Antiguo 08/11/2015, 08:29
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Contar Registros por mes

te comento el siguiente ejemplo busca y cuenta cuantos registros hay en la base de datos agrupandolos por el mes de la fecha, la cual esta conformada de la siguiente manera YYYY-mm-dd y arroja un resultado similar a este:

Ene 2
Feb 4
Mar 10
Abr 5
May 9
... y asi suscesivamente:

Código PHP:
Ver original
  1. <?php
  2. include('../Connections/conexion.php');
  3.  
  4. //cuento los registros por mes, el menu es un campo que esta en la tabla y estan los registros que quiero contar
  5. $cuenta = $db->query("select count(menu) as men,menu,fecha from fechas group by month(fecha) order by month(fecha)");
  6.  
  7. //inicio el ciclo
  8. while($row = $cuenta->fetch_array()){
  9.  
  10. //extraigo el mes de la fecha
  11.     list($Y,$m,$d) = explode("-",$row['fecha']);
  12.    
  13. //paso de numerico a texto el mes que corresponda
  14.     switch ($m) {
  15.   case '01':
  16.   $mes = 'Ene ';
  17.   break;
  18.  
  19.   case '02':
  20.   $mes = 'Feb ';
  21.   break;
  22.  
  23.   case '03':
  24.   $mes = 'Mar ';
  25.   break;
  26.  
  27.   case '04':
  28.   $mes = 'Abr ';
  29.   break;
  30.  
  31.   case '05':
  32.   $mes = 'May ';
  33.   break;
  34.  
  35.   case '06':
  36.   $mes = 'Jun ';
  37.   break;
  38.  
  39.   case '07':
  40.   $mes = 'Jul ';
  41.   break;
  42.  
  43.   case '08':
  44.   $mes = 'Ago ';
  45.   break;
  46.  
  47.   case '09':
  48.   $mes = 'Sep ';
  49.   break;
  50.  
  51.   case '10':
  52.   $mes = 'Oct ';
  53.   break;
  54.  
  55.   case '11':
  56.   $mes = 'Nov ';
  57.   break;
  58.  
  59.   case '12':
  60.   $mes = 'Dic ';
  61.   break;
  62.  
  63.  
  64. }
  65.     //listo los registros
  66.     echo "<li>".$mes." ".$row['men']."</li>";
  67. }
  68. ?>

ya es cuestion de adaptarla a tus necesidades o tomarla como idea, Saludos
__________________
[email protected]
HITCEL
  #14 (permalink)  
Antiguo 08/11/2015, 14:34
 
Fecha de Ingreso: marzo-2012
Ubicación: El Vigia Edo Merida
Mensajes: 147
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: Contar Registros por mes

Amigo mortiprogramador la verdad tienes toda la razon, si se muestra de esa manera el query que me arreglo gnzsoloyo, ahora la cuestion es poder saber que cantidad pertenece a cada mes, porq esta consulta la necesito es obtener la variable separada por mes, ya que necesito asignarla para una estadistica, probare con case haber si funciona,

Última edición por elsaiya; 08/11/2015 a las 14:42
  #15 (permalink)  
Antiguo 08/11/2015, 14:50
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: Contar Registros por mes

Pues crea una función que tome esos valores y te devuelva el nombre...
No creo que te sea muy difícil usar swith, considerando que el mes 1 es Enero y el 12 Diciembre, ¿no te parece?
No existe forma que te devuelva otros valores fuera de ese rango... En serio, es una parte muy simple de hacer y no creo que nenecesites mucha ayuda para lograrlo, ¿o si?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #16 (permalink)  
Antiguo 08/11/2015, 14:52
 
Fecha de Ingreso: marzo-2012
Ubicación: El Vigia Edo Merida
Mensajes: 147
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: Contar Registros por mes

Si amigo muchas gracias en verdad, por tu ayuda, aunq veo que solamente me muestra los meses q estan registrados, y quisiera es mostrar todos los meses, y los q tengan q sea valor 0, estoy probando hacerlo con switch y si me funciona bien las condiciones asignadolo a cada mes, el codigo me quedo de esta manera

Código PHP:
Ver original
  1. $tra = new Login();
  2. $reg = $tra->ConsultaMes();
  3.  
  4. for($i=0;$i<sizeof($reg);$i++){
  5. $mes=$reg[$i]['Mes'];
  6.  
  7. switch ($mes) {
  8.   case '01':
  9.   $mes = 'Ene ';
  10.   break;
  11.  
  12.   case '02':
  13.   $mes = 'Feb ';
  14.   break;
  15.  
  16.   case '03':
  17.   $mes = 'Mar ';
  18.   break;
  19.  
  20.   case '04':
  21.   $mes = 'Abr ';
  22.   break;
  23.  
  24.   case '05':
  25.   $mes = 'May ';
  26.   break;
  27.  
  28.   case '06':
  29.   $mes = 'Jun ';
  30.   break;
  31.  
  32.   case '07':
  33.   $mes = 'Jul ';
  34.   break;
  35.  
  36.   case '08':
  37.   $mes = 'Ago ';
  38.   break;
  39.  
  40.   case '09':
  41.   $mes = 'Sep ';
  42.   break;
  43.  
  44.   case '10':
  45.   $mes = 'Oct ';
  46.   break;
  47.  
  48.   case '11':
  49.   $mes = 'Nov ';
  50.   break;
  51.  
  52.   case '12':
  53.   $mes = 'Dic ';
  54.   break;
  55.  
  56.   }
  57.  
  58.   echo $mes." ".$reg[$i]['CantMes']."<br>";
  59.    
  60. }
  #17 (permalink)  
Antiguo 08/11/2015, 15:57
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: Contar Registros por mes

Cita:
Iniciado por elsaiya Ver Mensaje
Si amigo muchas gracias en verdad, por tu ayuda, aunq veo que solamente me muestra los meses q estan registrados, y quisiera es mostrar todos los meses, y los q tengan q sea valor 0, estoy probando hacerlo con switch y si me funciona bien las condiciones asignadolo a cada mes, el codigo me quedo de esta manera
Bueno, el tema es que la base de datos solamente te va a responder con los datos que existan, no con datos imaginarios (en el sentido de datos que no están en ninguna tabla). MySQL no va a inventar datos de la nada.
Las bases de datos trabajan con datos concretos. SI el dato no se puede tomar de ninguna otra taba, entonces nunca lo devolverá.

Usualmente hay dos soluciones, una más practica que la otra.
1) En lugar de mostrar con un foreach() o un while(), usas un simple for() del 1 al 12, mostrando todos los meses, y si el mes que vas a mostrar aparece en el result de la base, muestras el dato correspondiente.
2) Creas una tabla de meses en MySQL y la usas para cruzarla con l modo que siempre te devuelva los n[umeros de mes.

Y aunque no lo creas, la opción 1 es la mejor...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #18 (permalink)  
Antiguo 08/11/2015, 18:35
 
Fecha de Ingreso: marzo-2012
Ubicación: El Vigia Edo Merida
Mensajes: 147
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: Contar Registros por mes

mmmmm bueno la verdad no entiendo la parte como poder trabajar con for en esa consulta
  #19 (permalink)  
Antiguo 08/11/2015, 18:39
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Contar Registros por mes

Saludo
Pues el for fue como ya lo hiciste. Ya funcionando, imagino.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #20 (permalink)  
Antiguo 08/11/2015, 19:05
 
Fecha de Ingreso: marzo-2012
Ubicación: El Vigia Edo Merida
Mensajes: 147
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: Contar Registros por mes

si claro el me muestra los datos registrados, pero no logro capturar y asignarle una variable a cada mes, para poder mostrar las estadisticas por mes
  #21 (permalink)  
Antiguo 08/11/2015, 19:35
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Contar Registros por mes

mira esto es solo una prueba pero creo una variable individual por cada mes, claro cada una le coloco el nombre del mes, pero tu le puedes asignar el valor que necesites para tus estadisticas:

Código PHP:
Ver original
  1. <?php
  2. for($i=1; $i<=12; $i++){
  3.  
  4.     switch ($i) {
  5.   case '01':
  6.   $mes1 = 'Ene ';//aqui en cada una puedes cambiar el valor por lo que necesites, pero como ves cada variable $mes# tiene su numero asignado de esa manera la distingo y las puedo usar de manera individual
  7.   break;
  8.  
  9.   case '02':
  10.   $mes2 = 'Feb ';
  11.   break;
  12.  
  13.   case '03':
  14.   $mes3 = 'Mar ';
  15.   break;
  16.  
  17.   case '04':
  18.   $mes4 = 'Abr ';
  19.   break;
  20.  
  21.   case '05':
  22.   $mes5= 'May ';
  23.   break;
  24.  
  25.   case '06':
  26.   $mes6 = 'Jun ';
  27.   break;
  28.  
  29.   case '07':
  30.   $mes7 = 'Jul ';
  31.   break;
  32.  
  33.   case '08':
  34.   $mes8 = 'Ago ';
  35.   break;
  36.  
  37.   case '09':
  38.   $mes9 = 'Sep ';
  39.   break;
  40.  
  41.   case '10':
  42.   $mes10 = 'Oct ';
  43.   break;
  44.  
  45.   case '11':
  46.   $mes11 = 'Nov ';
  47.   break;
  48.  
  49.   case '12':
  50.   $mes12 = 'Dic ';
  51.   break;
  52.  
  53.   }
  54.  
  55.  
  56. }
  57.   echo $mes12;
  58. ?>
__________________
[email protected]
HITCEL
  #22 (permalink)  
Antiguo 08/11/2015, 19:55
 
Fecha de Ingreso: marzo-2012
Ubicación: El Vigia Edo Merida
Mensajes: 147
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: Contar Registros por mes

si amigo, yo lo hice de esa manera pero la verdad al asignarle la variable de la cantidad de mes no me devuelve el valor exacto sino un valor erroneo

Etiquetas: mysql, registros, 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 12:25.