SQL Abfrage aus mehreren Tabellen

B

ByeBye 273232

Guten Morgen :)

Ich versuche gerade eine SQL Abfrage zu machen, aber es gestaltet sich relativ schwierig für mich.

Mein Szenario:
- Ich habe 2 Häuser. In jedem Haus sind mehrere Zimmer und diese Zimmer sind zu verschiedenen Zeiten belegt.

Meine Datenbank:
belegung.png

Mein Ziel:
- Wie viele Zimmer gibt es in Haus 2
- Wie viele Zimmer sind aktuell frei in Haus 2


Ich weiß das ist sehr knifflig, aber Könnte mir da jemand weiterhelfen?

Viele Dank und schöne Grüße
Sebastian
 
Interessant ist zu wissen, was für eine DBMS du verwendest. Oracle? MS SQL? MySQL? MS Access? oder was anderes?

Ps. Sieht mir wie Hausaufgaben aus....

PPs: Nein, schwer ist das nicht...
 
Hi Yaslaw :)

Hausaufgaben sind bei mir eine Weile her, ich mach grad eine Web-App mit jQuery mobile.
Die Datenbank ist eine PostgreSQL. Meine bisherigen Abfragen habe ich per Script gemacht wie z.B.

Code:
getFromDB("SELECT * FROM haus WHERE ID = " + req.param("hausid")
 
Ich kenn PostgreSQL nicht direkt. ABer ich glaube das Tierchen kennt Subqueries. Ergo dürfte das folgende mehr oder minder gehen

Anzahl Zimmer im Haus 2
SQL:
SELECT
    COUNT(z.*)    AS anz
FROM
    zimmer z
WHERE
    z.haus_id = 2

Das 2te SQL ist ebenfalls einfach, wenn man annimmt, dass im feld belegung.haus_id die Zimmer-ID ist und nicht die Haus-ID.
Zudem gehe ich mal davon aus, aktuell heisst frame=1
SQL:
SELECT
    COUNT(z.*)    AS anz
FROM
    zimmer z,
    belegung b
WHERE
    z.id = b.haus_id
    AND z.haus_id = 2
    AND b.status = 1
    AND b.frame = 1
 
Zuletzt bearbeitet von einem Moderator:
Hi :)

Danke, das werde ich nachher gleich mal testen. Wobei es beim frame genau anders rum ist, also das aktuellste frame ist das mit dem höchsten Wert. Was würde sich denn dann ändern?
 
Eventuell mit MAX()?

Code:
SELECT
    COUNT(z.*)    AS anz
FROM
    zimmer z,
    belegung b
WHERE
    z.id = b.haus_id
    AND z.haus_id = 2
    AND b.STATUS = 1
    AND MAX(b.frame)
 
Achso? Gibt es auch ne andere Möglichkeit. Sorry komm nicht drauf wie es geht, hab n paar Möglichkeiten getestet
 
Dort sind doch schon etwa 4 Varianten.
Nimm eine und kombiniere sie mit meinem Beispiel.

Wenn du fertige Lösungen suchst und kein SQL lernen willst, dann schreib das.
 
Zurück