Richtige Reihenfolge einer Abfrage

Kampfgummibaerlie

Datenbank-Guru
Beiträge
734
Ich würde mir gerne die letzte Veränderung des Mietpreises "herausangeln", habe jedoch folgendes Szenario:

Code:
select max(preisveränderungszeitpunkt) AS AKTUELLE_KOSTEN
where AKTUELLE_KOSTEN<=current_timestamp
from preisveränderungen
limit 1;


Fehlermeldung:
FEHLER: Syntaxfehler bei »from«
LINE 3: from preisveränderungen
********** Error **********
FEHLER:
Syntaxfehler bei »from« SQL-Status: 42601 Zeichen: 100


Also ist meine relativ allgemeine Frage:
In welcher Reihenfolge muss/sollte man in SQL (PostgreSQL) das ganze ordnen?

Habe versucht das where vor, aber auch nach dem "from" zu setzen, gingen aber beide nicht ;)
 
Werbung:
Durch eigene Versuche gelöst:

Das From gehört vor dem Where platziert, richtiger Code würde so aussehen:

select max(preisveränderungszeitpunkt)
from preisveränderungen
where preisveränderungszeitpunkt<=current_timestamp
limit 1;

man kann offenbar nicht mit gegebenen Namen arbeiten, oder ich schaffe es nicht auf anhieb ;D
 
select ... from ... where ... limit

Code:
Anweisung:  SELECT
Beschreibung: liest Zeilen aus einer Tabelle oder Sicht
Syntax:
[ WITH [ RECURSIVE ] With-Anfrage [, ...] ]
SELECT [ ALL | DISTINCT [ ON ( Ausdruck [, ...] ) ] ]
  [ * | Ausdruck [ [ AS ] Ausgabename ] [, ...] ]
  [ FROM From-Element [, ...] ]
  [ WHERE Bedingung ]
  [ GROUP BY Gruppierelement [, ...] ]
  [ HAVING Bedingung [, ...] ]
  [ WINDOW Fenstername AS ( Fensterdefinition ) [, ...] ]
  [ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] Select ]
  [ ORDER BY Ausdruck [ ASC | DESC | USING Operator ] [ NULLS { FIRST | LAST } ] [, ...] ]
  [ LIMIT { Anzahl | ALL } ]
  [ OFFSET Start [ ROW | ROWS ] ]
  [ FETCH { FIRST | NEXT } [ Anzahl ] { ROW | ROWS } ONLY ]
  [ FOR { UPDATE | NO KEY UPDATE | SHARE | KEY SHARE } [ OF Tabellenname [, ...] ] [ NOWAIT | SKIP LOCKED ] [...] ]

wobei From-Element Folgendes sein kann:

  [ ONLY ] Tabellenname [ * ] [ [ AS ] Alias [ ( Spaltenalias [, ...] ) ] ]
  [ TABLESAMPLE Stichprobenmethode ( Argument [, ...] ) [ REPEATABLE ( Startwert ) ] ]
  [ LATERAL ] ( Select ) [ AS ] Alias [ ( Spaltenalias [, ...] ) ]
  With-Anfragename [ [ AS ] Alias [ ( Spaltenalias [, ...] ) ] ]
  [ LATERAL ] Funktionsname ( [ Argument [, ...] ] )
  [ WITH ORDINALITY ] [ [ AS ] Alias [ ( Spaltenalias [, ...] ) ] ]
  [ LATERAL ] Funktionsname ( [ Argument [, ...] ] ) [ AS ] Alias ( Spaltendefinition [, ...] )
  [ LATERAL ] Funktionsname ( [ Argument [, ...] ] ) AS ( Spaltendefinition [, ...] )
  [ LATERAL ] ROWS FROM( Funktionsname ( [ Argument [, ...] ] ) [ AS ( Spaltendefinition [, ...] ) ] [, ...] )
  [ WITH ORDINALITY ] [ [ AS ] Alias [ ( Spaltenalias [, ...] ) ] ]
  From-Element [ NATURAL ] Verbundtyp From-Element [ ON Verbundbedingung | USING ( Verbundspalte [, ...] ) ]

und Gruppierelement eins der folgenden sein kann:

  ( )
  Ausdruck
  ( Ausdruck [, ...] )
  ROLLUP ( { Ausdruck | ( Ausdruck [, ...] ) } [, ...] )
  CUBE ( { Ausdruck | ( Ausdruck [, ...] ) } [, ...] )
  GROUPING SETS ( Gruppierelement [, ...] )

und With-Anfrage ist:

  With-Anfragename [ ( Spaltenname [, ...] ) ] AS ( Select | values | insert | update | delete )

TABLE [ ONLY ] Tabellenname [ * ]
 
mal ne allgemeine Frage. Ab wann wird man hier im Forum als "Datenbank-Guru" bezeichnet.
Als "Guru" sollte doch solch Standardsyntax geläufig sein??
 
Werbung:
Zurück
Oben