Hallo,
ich suche nach einer Möglichkeit, in PostgreSQL vor der eigentlichen Abfrage Variablen oder While-Schleifen verwenden zu können, um vorab einen Wert zu berechnen.
Ein Beispiel:
Ein Hotel hat 100 Plätze. In einer Tabelle 'hotel' wird für Gruppen gespeichert, als wievielter sie das Hotel gebucht haben (id), den Namen der Gruppe (name) und die Anzahl der Personen (members). Ich möchte eine Abfrage erstellen, die mir alle Gruppen anzeigt, die noch genug Plätze im Hotel bekommen. Zum Beispiel sieht die Tabelle so aus:
id (integer) | name (character varying) | members (integer)
2 | Schachverein | 25
5 | RuderClub | 10
1 | FußballVerein | 21
3 | Klasse8d | 30
4 | FachschaftMathematik | 20
6 | FamilieMeier | 5
In dem Fall sollte die Ausgabetabelle [FußballVerein, Schachverein, Klasse8d, FachschaftMathematik] sein, weil das die ersten vier Registrierungen sind, welche zusammen 96 Plätze einnehmen. Mit dem RuderClub wären die 100 Plätze überstiegen, also kommt der nicht mehr in die Ausgabe.
-----
Mithilfe von Variablen und Schleifen wäre ein Problem in der Art leicht zu lösen. PostgreSQL akzeptiert aber die Syntax nicht. Mein Versuch:
PostgreSQL sieht schon direkt beim Deklarieren der Variable einen Syntaxfehler. Ich habe schon viel ausprobiert und recherchiert, aber das erstellen von Variablen bisher nicht richtig hinbekommen. Kann mir jemand helfen, dieses einfache Beispiel zum Laufen zu bekommen?
Danke & Gruß
re342
ich suche nach einer Möglichkeit, in PostgreSQL vor der eigentlichen Abfrage Variablen oder While-Schleifen verwenden zu können, um vorab einen Wert zu berechnen.
Ein Beispiel:
Ein Hotel hat 100 Plätze. In einer Tabelle 'hotel' wird für Gruppen gespeichert, als wievielter sie das Hotel gebucht haben (id), den Namen der Gruppe (name) und die Anzahl der Personen (members). Ich möchte eine Abfrage erstellen, die mir alle Gruppen anzeigt, die noch genug Plätze im Hotel bekommen. Zum Beispiel sieht die Tabelle so aus:
id (integer) | name (character varying) | members (integer)
2 | Schachverein | 25
5 | RuderClub | 10
1 | FußballVerein | 21
3 | Klasse8d | 30
4 | FachschaftMathematik | 20
6 | FamilieMeier | 5
In dem Fall sollte die Ausgabetabelle [FußballVerein, Schachverein, Klasse8d, FachschaftMathematik] sein, weil das die ersten vier Registrierungen sind, welche zusammen 96 Plätze einnehmen. Mit dem RuderClub wären die 100 Plätze überstiegen, also kommt der nicht mehr in die Ausgabe.
-----
Mithilfe von Variablen und Schleifen wäre ein Problem in der Art leicht zu lösen. PostgreSQL akzeptiert aber die Syntax nicht. Mein Versuch:
Code:
DECLARE @i int;
DECLARE @counter int;
SET @i = 0;
SET @counter = 0;
WHILE (@counter <= 100)
BEGIN
SET @i += 1;
SET @counter += (SELECT members FROM hotel WHERE id = @i)
END
GO
SELECT name
FROM hotel
WHERE id <= @i
ORDER BY id
PostgreSQL sieht schon direkt beim Deklarieren der Variable einen Syntaxfehler. Ich habe schon viel ausprobiert und recherchiert, aber das erstellen von Variablen bisher nicht richtig hinbekommen. Kann mir jemand helfen, dieses einfache Beispiel zum Laufen zu bekommen?
Danke & Gruß
re342