Jump to content

[Resolvido] Retornar quartos que não estão ocupados


Baia

Recommended Posts

Boas alguém me pode ajudar aqui com uma query?? 🙂

basicamente queria retornar os quartos que estão livres para um determinado intervalo de datas.

tenho estas 3 tabelas, e queria que ao passar duas datas me fosse retornado o id dos espaços que não estão ocupados entre essas datas(penso que o esquema relacional seja correto)

63202272.png

com esta query,

SELECT id FROM espacos WHERE NOT EXISTS (SELECT id_espaco
FROM espacos_reservados WHERE id_espaco = espacos.id)

retorna os espacos que não estão nos" espacos_reservados", mas agora falta as datas(que estão na outra tabela, "estadias") 😕

obrigado 😉

Link to comment
Share on other sites

já que são os dois idênticos, se não sei fazer um, também não sei fazer o outro 😉

não são idênticos, logo A não implica B.

cria então este SQL :

lista todas as entradas de "estadias" que se encontram registadas dentro de duas datas pré-determinadas

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

quase:

SELECT *
 FROM estadias
WHERE data_inicio <= '2013-05-30'
  AND data_fim >= '2013-05-27'

(ps : se o tipo de dados dos campos 'data_fim' e 'data_inicio' forem correctos)

achas que consegues adicionar SQL para relacionar a tabela "espacos_reservados" de modo a ter os id's dos espaços ?

Edited by HappyHippyHippo
IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

hum, assim?

SELECT id FROM espacos WHERE NOT EXISTS (SELECT
espacos_reservados.id_espaco
FROM espacos_reservados
INNER JOIN estadias
ON espacos_reservados.id_estadia = estadias.id
WHERE estadias.data_inicio <= '2013-05-30' AND estadias.data_fim >= '2013-05-27')

os as datas são do tipo "data"

Edited by brunoais
geshi
Link to comment
Share on other sites

estranho ... e o not in ?

SELECT id
 FROM espacos
WHERE id not in (SELECT id_espaco
                   FROM espacos_reservados INNER JOIN estadias ON espacos_reservados.id_estadia = estadias.id
                  WHERE data_inicio <= '2013-05-30'
                    AND data_fim >= '2013-05-27')
Edited by HappyHippyHippo
  • Vote 1
IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.