Viech
22.02.2009, 17:50
Hi Leute,
habe mich gerade hier angemeldet, weil ich echt nicht mehr weiterkomme. Seit einer Woche versuche ich, eine SQL Abfrage hinzubekommen. Aber ich komm einfach nicht mehr weiter.
Es geht um folgendes:
Ich will die Namen und Orte von Hotels und den Durchschnitt der Bewertungen für diese Hotels in einer Zeile ausgeben lassen.
Die Datenbankstruktur ist dabei folgende:
Es gibt die Tabellen "hotels", "rooms", "bookings" und "ratings". Ein Hotel hat mehrere Rooms. Ein Room hat mehrere Bookings. Und ein Booking hat genau ein Rating. Ich hänge mal zur Verdeutlichung eine grobe Skizze an.
Folgendes ist mein aktueller Versuch:
SELECT
a.name,
a.ort,
avg(d.rating)
FROM
hotels a,
ratings d
WHERE
d.bookingID = (SELECT id
FROM bookings
WHERE roomID = (SELECT id
FROM rooms
WHERE hotelID = '1'))
GROUP BY d.bookingID;
Das funktioniert aber nicht, weil die letzte Subquery mehrere Zeilen zurückgibt, weil natürlich mehrere Rooms zu einem Hotel gehören.
Aber was ich vorhabe muss doch irgendwie gehen?! Ich bin mit meinem Latein am Ende, hoffentlich könnt ihr mir helfen. Ich freue mich über jeden Tip.
schöne Grüße,
Viech
habe mich gerade hier angemeldet, weil ich echt nicht mehr weiterkomme. Seit einer Woche versuche ich, eine SQL Abfrage hinzubekommen. Aber ich komm einfach nicht mehr weiter.
Es geht um folgendes:
Ich will die Namen und Orte von Hotels und den Durchschnitt der Bewertungen für diese Hotels in einer Zeile ausgeben lassen.
Die Datenbankstruktur ist dabei folgende:
Es gibt die Tabellen "hotels", "rooms", "bookings" und "ratings". Ein Hotel hat mehrere Rooms. Ein Room hat mehrere Bookings. Und ein Booking hat genau ein Rating. Ich hänge mal zur Verdeutlichung eine grobe Skizze an.
Folgendes ist mein aktueller Versuch:
SELECT
a.name,
a.ort,
avg(d.rating)
FROM
hotels a,
ratings d
WHERE
d.bookingID = (SELECT id
FROM bookings
WHERE roomID = (SELECT id
FROM rooms
WHERE hotelID = '1'))
GROUP BY d.bookingID;
Das funktioniert aber nicht, weil die letzte Subquery mehrere Zeilen zurückgibt, weil natürlich mehrere Rooms zu einem Hotel gehören.
Aber was ich vorhabe muss doch irgendwie gehen?! Ich bin mit meinem Latein am Ende, hoffentlich könnt ihr mir helfen. Ich freue mich über jeden Tip.
schöne Grüße,
Viech