Sacar días o semanas de reservas
Hola,
Alguien tiene alguna idea?
Tengo una base mysql donde meto las reservas.
En una columna tipo date osea año-mes-día meto la fecha de llegada y en otra también tipo date meto la salida.
Quiero comprobar cuantos dias o semanas se alquiló el año pasado
y cuantos dias o semanas se ha alquilado en este año.
Haciendo esto saco cuantas reservas se ha hecho, pero como algunas son de una semana y otras de varias semanas, realmente el resultado no dice mucho.
SELECT * FROM `bookings` WHERE year(reservado) = '2007' and tiporeserva = 'cliente' order by `reservado`
Este es un ejemplo como esta las reservas en mysql:
1 2004-10-01 dueño 2004-10-31 Cerrado_Piedras
2 2004-10-01 cliente 2004-10-08 El Vivero
etc......
Alguna idea, exceptuando mirar las reservas de una en una?
markshock
Coña con el SUM() de toda la vida...
Si tienes razón hay cosas que se hacen mejor con el MySQL, pero no siempre las estructuras de base de datos que te encuentras te permiten realizar cualquier tipo de select....
;)
helenp
markshock
por narices ha de ser con un select?
por que podrías hacer un select del año en cuestión y montarte una función que te lo calcule....
http://www.tutores.org/?codigo=570&Diferencia-entre-dos-fechas
Pues porque no quiero hacer una pagina, sino solo consultar phpmyadmin una sola vez.
Y ademas hay muchas cosas que se puede hacer mejor con mysql que usando php. Por ejemplo el ejemplo que me has dado solo saca los dias que hay entre dos fechas, eso ya lo tenia, eso se hace con TO_DAYS, el problema era en sumar el resultado del to_days.
Al no obtener ninguna respuesta y en vista de no poderlo solucionar, lo he posteado en otro forum, donde si me han dado una solucion, por si a alguien le hace falta:
SELECT sum(TO_DAYS(salida) - TO_DAYS(llegada)) as days
FROM bookings
where tiporeserva = 'cliente' AND reservado between '2007-01-01' and '2007-04-31'
AND llegada between '2007-06-01' and '2007-08-31'
markshock
por narices ha de ser con un select?
por que podrías hacer un select del año en cuestión y montarte una función que te lo calcule....
http://www.tutores.org/?codigo=570&Diferencia-entre-dos-fechas
helenp
Y si hago esto si parece funcionar y da resultado pero es imposible la cifra:
SELECT llegada, salida, tiporeserva, sum( salida ) - sum( llegada ) AS dias
FROM bookings
WHERE tiporeserva = 'cliente'
AND year( llegada ) = '2007'
GROUP BY tiporeserva
Y me da como resultado 66518 que dividido por 7 da 9502 semanas,...una cifra incorrecta ya que hay 171 reservas y como mucho puede haber aprox. 250 semanas de reservas.
Asi que estoy perdido.
helenp
Sniff, pensaba que lo tenia,
me acorde de to_days y sum
creia que esto iba a funcionar:
SELECT llegada,salida, TO_DAYS(salida) - TO_DAYS(llegada) as dias, reservado, tiporeserva, SUM(dias) FROM bookings where tiporeserva = 'cliente' and year(llegada) = '2007'
pero me da este error:
#1054 - Unknown column 'dias' in 'field list'
no entiendo no debería de enternder el alias dias de los to_days como una columna?????