SQL Abfrage?
Hallo,
ich soll eine SQL Abfrage erstellen zu folgender Situation.
Es handelt sich um ein "Hotel".
Dieses Hotel enthält ein Zimmer und ein Kunde kann ein Zimmer buchen.
Wenn ein Kunde z.B. vom 1.1. - 10.1 ein Zimmer bucht soll kein anderer es für diesen Zeitraum buchen können.
Wie erstelle ich dazu eine Abfrage?
Das ist SQL auf Schulniveau deshalb müssen nicht zu viele Randbedingungen betrachtet werden.
Also die Tabellen wären einfach "Kunde", "Hotel" und "Zimmer".
Ich weiß allerdings nicht, wie ich eine Abfrage zum letzten Punkt machen soll.
MfG
Mohid Syed
3 Antworten
Deiner Systembeschreibung zufolge würde ich diese Tabellen mit folgendem Aufbau definieren:
CREATE TABLE kunde (
id INT NOT NULL AUTO_INCREMENT,
anreise DATE,
abreise DATE,
PRIMARY KEY(id)
);
CREATE TABLE zimmer (
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(id)
);
CREATE TABLE kunde_hat_zimmer (
kunde_id INT,
zimmer_id INT,
FOREIGN KEY (kunde_id) REFERENCES kunde(id),
FOREIGN KEY (zimmer_id) REFERENCES zimmer(id)
);
Eine Tabelle hotel erachte ich als nicht notwendig. Das wäre meiner Meinung nach eher nur der Name der Datenbank.
Für eine Abfrage, welche Zimmer in dem gegebenen Zeitraum belegt sind, bräuchtest du einen INNER JOIN, der die Tabellen kunde_hat_zimmer und kunde anhand ihrer ID zusammenzieht.
SELECT kunde.id FROM kunde
JOIN kunde_hat_zimmer ON kunde.id = kunde_hat_zimmer.zimmer_id
WHERE
kunde.anreise <= '2024/01/10'
AND
kunde.abreise >= '2024/01/01'
Ein Buchungsstatus wäre vielleicht eine Überlegung für eine Systemerweiterung. Die oben beschriebene Aufgabenstellung beinhaltet diese Anforderung nicht.
stimmt auch wieder, aber der reservierungsstatus wäre logisch mit zu erwähnen.
Ich weiß allerdings nicht, wie ich eine Abfrage zum letzten Punkt machen soll.
Ohne die Tabellenstruktur zu kennen, wird dir das hier auch niemand sagen können.
Also die Tabellen wären einfach "Kunde", "Hotel" und "Zimmer".
Kunde ist ja noch klar. Zimmer wäre - je nach Feldern - auch noch nachvollziehbar. Nur was soll die Tabelle Hotel?
Es sollte in der Tabelle „Zimmer“ einen Eintrag für die Belegungszeit des Zimmers geben, den du setzen musst. Oder gibt es alternativ eine entsprechende Tabelle?
Ich würde vielleicht die Tabel kunde_hat_zimmer einfach buchung nennen und ein zusätzliches Feld für status hinzufügen. Denn meist sind das Reservierungen die auch auslaufen können...