2011-04-08 2 views
0

Bonjour J'ai une base de données dans Microsoft SQL Server avec des tables pertinentes à un système de réservation pour un hôtel/villa et ont besoin d'aide pour créer quelques requêtes pour obtenir des données pertinentes:Aide hôtel requêtes

Pour être en mesure de savoir une liste de clients vérifiant à une date spécifique, regroupés par type de villa et fournissant un nombre total pour ce jour (c.-à-d. un compte).

Pour cette requête, je pense que je devrais utiliser 2 tables pertinentes de réservation d'une et table d'hôtes de réservation:

create table guest_reservation(confirm_no int, 
agent_id int, 
g_name varchar (30), 
g_phone varchar (10)); 

create table reservation(
confirm_no int, 
credit_card_no char (16), 
res_checkin_date datetime, 
res_checkout_date datetime, 
default_villa_type char (1), 
price_plan char (1)); 



I thought using a query like this would help, but it didn't seem to: 

SELECT g_name, villa_type, COUNT(*) 
FROM guest_reservation, reservation 
WHERE guest_reservation.confirm_no = reservation.confirm_no 
    AND res_checkout_date = ‘insert date for when you would want to check out here’ 
GROUP BY villa_type; 

Idées/help?

EDIT: Je pense que je me suis dit la 1ère question ...

Une autre question que je voulais aide était que si un invité voulait un certain type de chambre alors si ce type de chambre serait disponible aux dates ils voulaient rester.

J'utilise juste la table de réservation, mais je ne sais pas si cela tout à fait ce que je veux, voici ce que j'avais actuellement:

Select villa_type from reservation 
where res_check_in_date not between '2011-10-08' and '2011-10-09' 
and res_check_out_date not between '2011-10-08' and '2011-10-09' 
+0

Pourquoi toutes les instructions 'alter', il suffit de le mettre dans la déclaration de la table au début pour le rendre plus facile à lire. – JNK

+0

Désolé essayait juste de montrer comment j'ai créé les tables, les clés impliquées et ensuite ce que j'essayais de faire après avec cette dernière requête ... c'est surtout la dernière question que je pose à propos de comment l'utiliser de manière appropriée pour obtenir la sortie dont j'ai besoin? – Jon

+0

consolidez-le en une instruction 'CREATE TABLE', il sera beaucoup plus facile de vous aider. Nous avons besoin de voir la structure de la table pour évaluer la requête. – JNK

Répondre

0

En raison de la nature des intervalles de temps, vous pouvez le trouver utile, non, nécessaire, pour créer une table Calendrier qui est simplement une liste statique de jours dans le calendrier. Ceux-ci sont presque toujours créés dans des projets BI pour l'analyse de données.

Ce que vous permet cet objet est de joindre votre table de réservation à la table Calendrier, en vous donnant une liste de dates distinctives qui englobent la période. Voici un exemple de code:

inner join calendar 
on calendar.date between reservation.res_checkin_date and reservation.res_checkout_date 

Par exemple, si je vérifie aujourd'hui (4/12) et de vérifier le jeudi (4/14), se joindre à la table de calendrier produit 3 lignes distinctes, une chacun pour 4/12, 4/13, 4/14. En termes de vérification de la disponibilité, c'est une image beaucoup plus claire de qui occupe quoi, quand.

De plus, il existe des nuances de code dont vous pouvez avoir besoin, telles que l'utilisation d'un DATE au lieu de DATETIME, afin d'éliminer la possibilité de générer des résultats inattendus. Si vous avez besoin d'un type DATETIME complet, il existe des moyens pour efficiently query the DATE in a DATETIME.