Fórum Disponibilidade de quartos #430835
11/12/2012
0
Tabelas - Reserva - dataentrada - Date
datasaida - Date
Tipo_Apto - Int
TipoApto - nome - varchar
quantidade - int
Dados da tabela Reserva
Nome dataentrada datasaida tipoapto
joao 12-12-2012 15-12-2012 1
Luis 12-12-2012 13-12-2012 1
Dados da tabela tipoSuite
tipo_apto nome Quantidade_apto
1 Single 2
2 Double 3
Como montar um select que me retorne a disponibilidade do num periodo de 45 dias.
11-12-2012 12-12-2012 13-12-2012 14-12-2012 15-12-2012 16-12-2012 17-12-2012....................
Single 2 0 1 1 2 2 2
DOUBLE 3 3 3 3 3 3 3
Obrigado
Luis Carlos
Curtir tópico
+ 0Posts
11/12/2012
William
Sempre dá para montar uma instrução SQL que atenda suas necessidades, precisa só saber organizar as informações do filtro!
Gostei + 0
12/12/2012
Claudia Nogueira
Gostei + 0
12/12/2012
Luis Carlos
Será fixo para 45 dias.
As datas que eu quero pegar
data inicial = hoje
data final = hoje + 45 dias
Luis
Gostei + 0
12/12/2012
Felipe Ribeiro
select * from Reserva where DATE_FORMAT(data_inicial,'%Y-%m-%d') = curdate() and DATE_FORMAT(data_final,'%Y-%m-%d') <= date_add(curdate(), interval 45 day)
Qualquer dúvida estamos aí.. (y)
Gostei + 0
12/12/2012
Claudia Nogueira
Então eu criei a procedure assim:
DELIMITER \
CREATE PROCEDURE QUARTOS_DISPONIVEIS()
BEGIN
DECLARE data_inicial DATE DEFAULT CURDATE();
DECLARE data_final DATE DEFAULT CURDATE();
SET data_final = (SELECT DATE_ADD(CURDATE(), INTERVAL 45 DAY));
DROP TEMPORARY TABLE IF EXISTS TMP;
CREATE TEMPORARY TABLE tmp (data date, nome varchar(100), quantidade int);
WHILE data_inicial <= data_final DO
INSERT INTO TMP (data, nome, quantidade)
(SELECT a.data,
t.nome,
t.quantidade - COALESCE((SELECT count(id_reserva)
FROM reserva r
WHERE (r.tipo_apto = t.tipo_apto)
AND (a.data >= r.dataentrada)
AND (a.data <= r.datasaida)),0) reservado
FROM (SELECT (SELECT data_inicial) data) a, tipoapto t);
SET data_inicial = (SELECT DATE_ADD(data_inicial, INTERVAL 1 DAY));
END WHILE;
SELECT * FROM TMP;
END;
E depois pra chamar:
CALL QUARTOS_DISPONIVEIS()
Gostei + 0
15/12/2012
Luis Carlos
Claudiadnh,
Funcionou perfeitamente.
Muito Obrigado
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)