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

Consulta MYSQL

Estas en el tema de Consulta MYSQL en el foro de Mysql en Foros del Web. Hola... Como yo aria para realizar una consulta donde me aparezca las fechas por mes y que me de el total de todas las fechas ...
  #1 (permalink)  
Antiguo 13/01/2009, 08:19
 
Fecha de Ingreso: diciembre-2008
Ubicación: Av. Republica Casa#106
Mensajes: 125
Antigüedad: 15 años, 4 meses
Puntos: 0
Pregunta Consulta MYSQL

Hola... Como yo aria para realizar una consulta donde me aparezca las fechas por mes y que me de el total de todas las fechas ingresadas en la tablas de mi base de datos.

El nombre de la tablas es REFERENCIA y estos son sus campos:

serial
fecha
hora
municipio
parroquia
referido
nombres
sexo
edad
direccion_p
telefono_p
motivo
resumen
hematologia
orina
heces
quimica
placas
tomografia
resonancia
observacion
apreciacion
nombres_m
telefono_d
cm
mpps

Ejemplo de la consulta que estoy pidiendo:

MES----------CANTIDAD
ENERO------------50
FEBRERO----------90
MARZO------------60
ABRIL-------------20
TOTAL------------220

De esta manera el campo en la base de datos recibe la información: 2008-11-10.

SI EXISTE ALGUNA OTRA MANERA DE REALIZAR ESA CONSULTA SE LOS AGRADECERÍA
.
  #2 (permalink)  
Antiguo 13/01/2009, 08:39
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Consulta MYSQL

Si todas las fehas son del mismo año, funcionará. Pero si hay fechas de varios años, tendrás que agrupar por año y mes.

SELECT
CASE WHEN MONTH(fecha) = 1 THEN "enero"
WHEN MONTH(fecha) = 2 THEN "febrero"
WHEN MONTH(fecha) = 3 THEN "marzo"
WHEN MONTH(fecha) = 4 THEN "abril"
WHEN MONTH(fecha) = 5 THEN "mayo"
WHEN MONTH(fecha) = 6 THEN "junio"
WHEN MONTH(fecha) = 7 THEN "julio"
WHEN MONTH(fecha) = 8 THEN "agosto"
WHEN MONTH(fecha) = 9 THEN "septiembre"
WHEN MONTH(fecha) = 10 THEN "octubre"
WHEN MONTH(fecha) = 11 THEN "noviembre"
WHEN MONTH(fecha) = 12 THEN "diciembre"
ELSE "esto no es un mes" END AS MESespañol, COUNT(*) total FROM referencia GROUP BY MONTH (fecha) WITH ROLLUP ORDER BY MONTH(fecha)


SELECT
IFNULL(CASE WHEN MONTH(fecha) = 1 THEN "enero"
WHEN MONTH(fecha) = 2 THEN "febrero"
WHEN MONTH(fecha) = 3 THEN "marzo"
WHEN MONTH(fecha) = 4 THEN "abril"
WHEN MONTH(fecha) = 5 THEN "mayo"
WHEN MONTH(fecha) = 6 THEN "junio"
WHEN MONTH(fecha) = 7 THEN "julio"
WHEN MONTH(fecha) = 8 THEN "agosto"
WHEN MONTH(fecha) = 9 THEN "septiembre"
WHEN MONTH(fecha) = 10 THEN "octubre"
WHEN MONTH(fecha) = 11 THEN "noviembre"
WHEN MONTH(fecha) = 12 THEN "diciembre"
ELSE "esto no es un mes" END, 'TOTAL') MESespañol, COUNT(*) total FROM referencia GROUP BY MONTH (fecha) WITH ROLLUP ORDER BY MONTH(fecha)

Última edición por jurena; 13/01/2009 a las 08:54
  #3 (permalink)  
Antiguo 13/01/2009, 08:42
 
Fecha de Ingreso: enero-2009
Mensajes: 7
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Consulta MYSQL

si tubieras un campo en donde guardar el mes seria mas facil por ejemplo

fecha mes campo
10/01/2009 enero xxxx

select mes, count(mes)
from tabla1
group by mes
  #4 (permalink)  
Antiguo 13/01/2009, 09:03
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 MYSQL

Ya preguntaste algo parecido hace unos días, y la respuesta sigue siendo la misma, aunque el conjunto de datos a recuperar sea distinto:
Código sql:
Ver original
  1. SELECT DATE_FORMAT(fecha, '%M') Mes, COUNT(*)
  2. FROM parroquias
  3. GROUP BY Mes WITH ROLLUP;

El DATE_FORMAT(fecha, '%M') Mes bien se puede cambiar por el CASE... que te indican arriba. El resultado varía solamente en el lenguaje del texto devuelto.
__________________
¿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 13/01/2009, 09:05
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 MYSQL

Cita:
Iniciado por hansoad Ver Mensaje
si tubieras un campo en donde guardar el mes seria mas facil por ejemplo

fecha mes campo
10/01/2009 enero xxxx

select mes, count(mes)
from tabla1
group by mes
No es buena idea. Guardar el mes por separado provoca un desperdicio de espacio, ya que un DATETIME usa sólo 4 bytes para guardar una fecha, mientras que hacerlo por separado insume hasta 14 bytes.
Además, el uso de una función MONTH(mes) ya te devuelve ese valor en forma directa y sin agregar nada.
__________________
¿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 13/01/2009, 09:07
 
Fecha de Ingreso: enero-2009
Mensajes: 7
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Consulta MYSQL

Hola todos, soy nuevo en este foro y quisiera obviamente que me ayudaran porfavor, resulta que tengo una tabla con estos campos y datos

campo1 campo2 campo3
1 1 123
2 3 39
3 2 1569

al realizar una consulta sql select campo1, campo2, campo3 from tabla1 desplegara este resultado

campo1 campo2 campo3
1 1 123
2 3 39
3 2 1569

lo que quiero que me ayuden es que desplegue el campo2 concatenando tantos '0' que falten para completar 6 digitos en el campo3

por ejemplo la consulta deberia quedar asi

cuenta

11000123
23000039
32001569

gracias

[email protected]
  #7 (permalink)  
Antiguo 13/01/2009, 09:35
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Consulta MYSQL

Así:

SELECT CONCAT(CAST(campo1 as char), cast(campo2 as char),REPEAT('0',(6-length(campo3))),cast(campo3 as char)) numero FROM `tabla`
  #8 (permalink)  
Antiguo 13/01/2009, 09:54
 
Fecha de Ingreso: enero-2009
Mensajes: 7
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Consulta MYSQL

Hola todos, soy nuevo en este foro y quisiera obviamente que me ayudaran porfavor, resulta que tengo una tabla con estos campos y datos

campo1 campo2 campo3
1 1 123
2 3 39
3 2 1569

al realizar una consulta sql select campo1, campo2, campo3 from tabla1 desplegara este resultado

campo1 campo2 campo3
1 1 123
2 3 39
3 2 1569

lo que quiero que me ayuden es que desplegue el campo2 concatenando tantos '0' que falten para completar 6 digitos en el campo3

por ejemplo la consulta deberia quedar asi

cuenta

11000123
23000039
32001569

gracias

[email protected]

Pd: no me salio, quizas porque no tiene nada que ver con mysql, tengo una base de datos oracle, y para consultar utilizo el ORACLE SQL *PLUS
Pd: no me salio, quizas porque no tiene nada que ver con mysql, tengo una base de datos oracle, y para consultar utilizo el ORACLE SQL *PLUS
Pd: no me salio, quizas porque no tiene nada que ver con mysql, tengo una base de datos oracle, y para consultar utilizo el ORACLE SQL *PLUS
  #9 (permalink)  
Antiguo 13/01/2009, 09:55
 
Fecha de Ingreso: diciembre-2008
Ubicación: Av. Republica Casa#106
Mensajes: 125
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Consulta MYSQL

Amigo para yo usar ese tipo de consulta no debo tener la fecha de forma SELECT. Osea en menus tipo cascada. Dia: (menu desplegable), Mes: (menu desplegable), Año: (menu desplegable).
  #10 (permalink)  
Antiguo 13/01/2009, 09:56
 
Fecha de Ingreso: enero-2009
Mensajes: 7
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Consulta MYSQL

Estos campos son char
  #11 (permalink)  
Antiguo 13/01/2009, 09:57
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Consulta MYSQL

hansoad
Este es un foro MySQL. No sé cuáles serían los equivalentes de CONCAT, length y REPEAT en Oracle. Pero eso es lo que tienes que buscar y aplicar. Lo mejor es que lo preguntes en el foro de Oracle directamente y te ahorrarás problemas. http://www.forosdelweb.com/f100/

Última edición por jurena; 13/01/2009 a las 10:03
  #12 (permalink)  
Antiguo 13/01/2009, 09:58
 
Fecha de Ingreso: diciembre-2008
Ubicación: Av. Republica Casa#106
Mensajes: 125
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Consulta MYSQL

Cita:
Iniciado por jurena Ver Mensaje
Si todas las fehas son del mismo año, funcionará. Pero si hay fechas de varios años, tendrás que agrupar por año y mes.

SELECT
CASE WHEN MONTH(fecha) = 1 THEN "enero"
WHEN MONTH(fecha) = 2 THEN "febrero"
WHEN MONTH(fecha) = 3 THEN "marzo"
WHEN MONTH(fecha) = 4 THEN "abril"
WHEN MONTH(fecha) = 5 THEN "mayo"
WHEN MONTH(fecha) = 6 THEN "junio"
WHEN MONTH(fecha) = 7 THEN "julio"
WHEN MONTH(fecha) = 8 THEN "agosto"
WHEN MONTH(fecha) = 9 THEN "septiembre"
WHEN MONTH(fecha) = 10 THEN "octubre"
WHEN MONTH(fecha) = 11 THEN "noviembre"
WHEN MONTH(fecha) = 12 THEN "diciembre"
ELSE "esto no es un mes" END AS MESespañol, COUNT(*) total FROM referencia GROUP BY MONTH (fecha) WITH ROLLUP ORDER BY MONTH(fecha)


SELECT
IFNULL(CASE WHEN MONTH(fecha) = 1 THEN "enero"
WHEN MONTH(fecha) = 2 THEN "febrero"
WHEN MONTH(fecha) = 3 THEN "marzo"
WHEN MONTH(fecha) = 4 THEN "abril"
WHEN MONTH(fecha) = 5 THEN "mayo"
WHEN MONTH(fecha) = 6 THEN "junio"
WHEN MONTH(fecha) = 7 THEN "julio"
WHEN MONTH(fecha) = 8 THEN "agosto"
WHEN MONTH(fecha) = 9 THEN "septiembre"
WHEN MONTH(fecha) = 10 THEN "octubre"
WHEN MONTH(fecha) = 11 THEN "noviembre"
WHEN MONTH(fecha) = 12 THEN "diciembre"
ELSE "esto no es un mes" END, 'TOTAL') MESespañol, COUNT(*) total FROM referencia GROUP BY MONTH (fecha) WITH ROLLUP ORDER BY MONTH(fecha)
Amigo para yo usar ese tipo de consulta no debo tener la fecha de forma SELECT. Osea en menus tipo cascada. Dia: (menu desplegable), Mes: (menu desplegable), Año: (menu desplegable).
  #13 (permalink)  
Antiguo 13/01/2009, 10:06
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Consulta MYSQL

The_Black_Eduard
No es necesario, pero aplica la consulta de gnzsoloyo y si te sale en español no será necesario nada de lo que yo te he puesto. Lo único, que necesitarás aplicar un IFNULL luego para evitar el NULL que aparecerá en lugar del total, todo ello provocado por el WITH ROLLUP.
  #14 (permalink)  
Antiguo 13/01/2009, 10:14
 
Fecha de Ingreso: diciembre-2008
Ubicación: Av. Republica Casa#106
Mensajes: 125
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Consulta MYSQL

Y si yo creo un campo en la tabla para el Día, Mes y Año? al hacer eso tendría que modificar la interfaz pero no seria mas facil general la consulta que yo quiero?
  #15 (permalink)  
Antiguo 13/01/2009, 10:21
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Consulta MYSQL

No, amigo.
Lo recomendable es usar campos de tipo DATE, DATETIME,TIMESTAMP, etc., es decir, campos fecha para fecha. De ellos puedes sacar todo, ordenar, buscar por rango y siempre obtendrás los resultados deseados. Olvídate ahora de eso de separar año, mes y día en la base de datos. De hecho lo que se suele hacer cuando se hacen consultas desde formularios es reunir los tres datos que forman una cadena, luego convertirla en tiempo y finalmente lanzar la consulta para comparar ese tiempo con el del campo tipo fecha de la base de datos.
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 14:00.