|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Dec 2006
Messaggi: 22
|
[SQL] Query per assegnazione camere albergo
Ciao ragazzi,
mi date un consiglio? Dovrei realizzare una query che mi permetta di selezionare le camere libere di un albergo. Ho realizzato la seguente: SELECT * FROM camere WHERE id NOT IN ( SELECT id_camera_assegnata FROM prenotazioni WHERE ( ('2011-10-30' > data_arrivo AND '2011-10-30' < data_partenza) OR ('2011-11-01' > data_arrivo AND '2011-10-01' < data_partenza) ) AND id_tipo_camera='1' AND flag_conclusa='Y' ) AND id_tipo_camera='1' Ma non sembra funzionare correttamente. Mi date una mano? Questa è la struttura delle tabelle: CREATE TABLE `camere` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `descrizione` VARCHAR(50) NOT NULL, `id_tipo_camera` INT(10) UNSIGNED NOT NULL, PRIMARY KEY (`id`) ) CREATE TABLE `prenotazioni` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `data_arrivo` DATE NULL DEFAULT NULL, `data_partenza` DATE NULL DEFAULT NULL, `id_tipo_camera` INT(11) NULL DEFAULT NULL, `totale_iva_esclusa` DECIMAL(10,2) UNSIGNED NOT NULL DEFAULT '0.00', `totale` DECIMAL(10,2) UNSIGNED NOT NULL DEFAULT '0.00', `totale_iva` DECIMAL(10,2) UNSIGNED NOT NULL DEFAULT '0.00', `saldato` DECIMAL(10,2) UNSIGNED NOT NULL DEFAULT '0.00', `id_tipo_pagamento` INT(10) UNSIGNED NULL DEFAULT NULL, `ora_arrivo` VARCHAR(10) NULL DEFAULT NULL, `note` VARCHAR(500) NULL DEFAULT NULL, `id_camera_assegnata` INT(10) NULL DEFAULT NULL, `id_soggetto` INT(11) NULL DEFAULT NULL, `id_numero_ospiti` INT(10) NOT NULL, `flag_conclusa` VARCHAR(1) NOT NULL DEFAULT 'N', `timestamp` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP, `id_sessione` VARCHAR(25) NULL DEFAULT NULL, `id_trattamento` INT(10) UNSIGNED NOT NULL, `id_stato_prenotazione` INT(10) NOT NULL DEFAULT '1', `totale_camera` DECIMAL(10,2) NOT NULL DEFAULT '0.00', `totale_iva_esclusa_camera` DECIMAL(10,2) NOT NULL DEFAULT '0.00', `totale_iva_camera` DECIMAL(10,2) NOT NULL DEFAULT '0.00', `totale_servizi_extra` DECIMAL(10,2) NOT NULL DEFAULT '0.00', `totale_iva_esclusa_servizi_extra` DECIMAL(10,2) NOT NULL DEFAULT '0.00', `totale_iva_servizi_extra` DECIMAL(10,2) NOT NULL DEFAULT '0.00', `eseguito_check_out` VARCHAR(1) NOT NULL DEFAULT 'N', `data_check_out` DATETIME NULL DEFAULT NULL, `residuo_pagare` DECIMAL(10,2) NULL DEFAULT NULL, PRIMARY KEY (`id`), INDEX `FK_prenotazioni_soggetti` (`id_soggetto`), INDEX `FK_prenotazioni_tipi_camere` (`id_tipo_camera`), CONSTRAINT `FK_prenotazioni_soggetti` FOREIGN KEY (`id_soggetto`) REFERENCES `soggetti` (`id`), CONSTRAINT `FK_prenotazioni_tipi_camere` FOREIGN KEY (`id_tipo_camera`) REFERENCES `tipi_camere` (`id`) ) CREATE TABLE `tipi_camere` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `descrizione` VARCHAR(50) NOT NULL, `totale_iva_esclusa_default` DECIMAL(10,2) UNSIGNED NOT NULL DEFAULT '0.00', `totale_iva_default` DECIMAL(10,2) UNSIGNED NULL DEFAULT '0.00', `totale_default` DECIMAL(10,2) UNSIGNED NULL DEFAULT '0.00', `numero_massimo_ospiti` INT(10) UNSIGNED NOT NULL, `id_codice_iva` INT(11) NULL DEFAULT NULL, PRIMARY KEY (`id`) ) Considerate che il giorno di partenza è da considerarsi libero poichè il cliente lascia la camera. Ciao. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jul 2011
Messaggi: 381
|
ciao, generalmente con le date si usa il costrutto BETWEEN, comunque il mio consiglio è quello di usare il formato ISO standard.
Nel tuo caso comunque manca inizialmente il formato della data SET DATEFORMAT ymd.
__________________
Concluso positivamente con: Kamzata, Ducati82, Arus, TheLastRemnant, ghost driver, alexbull1, DanieleRC5, XatiX |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:36.



















