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

Consulta por año, mes y dia

Estas en el tema de Consulta por año, mes y dia en el foro de Bases de Datos General en Foros del Web. Hola como estan. Tengo una base de datos donde se a estado subiendo desde hace años atras y ahora me tengo que hacer que esa ...
  #1 (permalink)  
Antiguo 16/06/2005, 15:03
Avatar de alexis77  
Fecha de Ingreso: diciembre-2003
Mensajes: 119
Antigüedad: 20 años, 11 meses
Puntos: 0
Consulta por año, mes y dia

Hola como estan.

Tengo una base de datos donde se a estado subiendo desde hace años atras y ahora me tengo que hacer que esa base de datos me muestre el contenido de la siguiente forma.


el tipodo de campo es date

Primero me tiene que mostrar por años y tengo la siguiente consulta

Código PHP:
$query1 "SELECT * FROM " .$tabla" WHERE YEAR(fecha) = '2005' GROUP BY fecha ASC";
$db->query($query);
while(
$db->next_record()){
    echo 
"<br>" .$db->f(fecha);

con esta consulta me saca todos los que consiga con el año 2005 y quero que me liste de la siguiente manera

2000 - 2001 - 2002 - 2003, etc


luego cuando haga click en uno de estos años me tiene que mostrar por meses

enero
2000-01-12 - 2000-03-20 - 2000-07-18 - 2000-07-19

febrero
2000-10-12 - 2000-10-13 - 2000-11-12 - 2000-12-20
marzo
2000-05-03 - 2000-03-06 - 2000-09-12 - 2000-10-19
abril
2000-01-12 - 2000-01-16 - 2000-05-25 - 2000-07-15

,hasta diciembre

y finalmente los registros q haya por dia
titulo titulo titulo titulo
titulo titulo titulo titulo
titulo titulo titulo titulo
titulo titulo titulo titulo
titulo titulo titulo titulo
titulo titulo titulo titulo
titulo titulo titulo titulo
titulo titulo titulo titulo



Ojala que me puedan ayudar
  #2 (permalink)  
Antiguo 16/06/2005, 15:49
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 7 meses
Puntos: 2
Hola!

Es igual, tal como lo tienes, solo que en lugar de Year lo cambiaras por Month y por Day según el caso.
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #3 (permalink)  
Antiguo 23/06/2005, 13:46
Avatar de alexis77  
Fecha de Ingreso: diciembre-2003
Mensajes: 119
Antigüedad: 20 años, 11 meses
Puntos: 0
Ya los ordene por año y mes pero ahora tengo un problemilla al momento de agrupar los dias porque un mes puede tener n fechas iguales de esta forma

2005-05-10
2005-05-15
2005-05-20
2005-05-20
2005-05-20
2005-05-20, etc y con otras fechas tambien...


en este ejm estoy agrupando por meses, cual seria la forma para agrupar por dia?


Código PHP:
$query1 "SELECT * FROM " .$tabla" WHERE YEAR(fecha) = '2005'  GROUP BY MONTH(fecha)";
$db->query($query);
while(
$db->next_record()){
    echo 
"<br>" .$db->f(fecha);

  #4 (permalink)  
Antiguo 23/06/2005, 14:01
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 7 meses
Puntos: 2
Hola!

Creo que te faltan condiciones en el where, por ejemplo, tu dices esto:

1. Lista de [Años] = ya lo tienes

2. Hago click en un [Año], quiero todos los meses de ese año, bueno en el where debes agregar que la fecha debe ser igual a ese año, y agrupar por mes

3. Tienes una lista de [Meses] del año que elegiste, haces click en un [Mes], bueno, debes entonces agregar al where, el [Año], y el [Mes] que ya has seleccionado antes, y agrupar basado en el día.

4. Al final, tienes una fecha específica completa, entonces en el where agregas [Año], [Mes] y [Día] y obtendras toda la info que necesitas.

Espero haberme explicado bien.

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #5 (permalink)  
Antiguo 23/06/2005, 14:12
Avatar de alexis77  
Fecha de Ingreso: diciembre-2003
Mensajes: 119
Antigüedad: 20 años, 11 meses
Puntos: 0
Neuron_376 tu explicacion esta bien pero no puedo utilizar de esta forma la funcion DAY(fecha) = 20 no funciona

y no se como listar las fechas de un determinado mes sin repetirlas
  #6 (permalink)  
Antiguo 23/06/2005, 14:31
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 7 meses
Puntos: 2
Hummmm

Cuestion de probar, no puedes hacer algo como:

select * from tabla
where Year(Date) = '2005'
and Month(Date) = 'Enero'
group by Day(Date)

No estoy seguro porque no esta probado, pero es muy probable que si se pueda.
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #7 (permalink)  
Antiguo 23/06/2005, 16:19
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 7 meses
Puntos: 2
Prueba esto...

No me convence mucho, realmente no me gusto la solucion, pero prueba con esto tambien:

Cita:

select
Campo1,
Campo2,
Campo3,
(cast(Month(Date) as varchar(255)) + '/' + cast(Day(Date) as varchar(255)) + '/' + cast(Year(Date) as varchar(255))) 'Date' from tblFechaTest
where Year(Date) = '2005'
and Month(Date) = '02'
and Day(Date) = '15'
group by Campo1, Campo2, Campo3, Date
Esa seria una final, como te dije en la explicación, realmente debes ir quitando u poniendo sentencias en el where según el paso en el que vas.

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #8 (permalink)  
Antiguo 24/06/2005, 04:19
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 20 años, 3 meses
Puntos: 102
Cita:
Iniciado por alexis77
no puedo utilizar de esta forma la funcion DAY(fecha) = 20 no funciona
Tube el mismo problema.. y aquí me dijeron de la función DAYOFMONTH() ... son lo mismo...

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
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:29.