wie funktioniert diese SQL-Abfrage?

... komplette Frage anzeigen

3 Antworten

Das Problem bei so einer Abfrage ist, dass es mehrere Sätze mit dem Maximalwert geben kann. Ob das bei Deinem Problem speziell zutrifft, weiß ich nicht. Ggf. muss man sich Gedanken darüber machen, wie die Datenbank sich da verhalten soll.

Die folgende verschachtelte Abfrage würde ggf. mehrere guthaben ausweisen, wenn alle dazugehörende VGZ den maximalen Wert haben.

SELECT guthaben FROM testtabelle 
WHERE guthaben = (SELECT MAX(VGZ))

Auch können nach diesem Verfahren mit dem guthaben weitere zusätzliche Infos ausgegeben werden. Ein Beispiel dafür: Aus einem Warenkatalog soll der teuerste Artikel mit Bezeichnung angezeigt werden:

SELECT preis, bezeichnung FROM warenkatalog 
WHERE preis = (SELECT MAX(preis) FROM Warenkatalog)

oder auch

SELECT preis, Bezeichnung FROM warenkatalog
WHERE preis in
(SELECT MAX(preis) FROM warenkatalog)
Antwort bewerten Vielen Dank für Deine Bewertung
SELECT Guthaben 
FROM Testtabelle 
WHERE VGZ >= ALL(SELECT VGZ FROM Testtabelle);
Antwort bewerten Vielen Dank für Deine Bewertung
select Guthaben from Testtabelle where VGZ=(select max(VGZ) from Testtabelle)

alternativ könntest du auch soetwas probieren wie:

für MSSQL zB

select Top 1 VGZ, Guthaben from Testtabelle order by VGZ desc

je nachdem was für ein SQL-Server es ist, ist die Syntax natürlich eine andere.

(http://www.w3schools.com/sql/sql\_top.asp)

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von mymomo
22.01.2016, 15:35

Klappt super, dank... jedoch habe ich noch einen Parameter vergessen^^...

Es gibt noch die Spalte Kartenlaufnummer. Hier möchte ich jetzt eine bestimmte Kartenlaufnummer auswählen, zB 1234.

Im Klartext: suche in Tabelle Testtabelle nach der Kartenlaufnummer 1234, hole dir dort den höchsten Vorgangszähler und gib mir aus, was in dieser Zeile in der Spalte Guthaben drin steht.

Ich möchte also eigentlich nur das aktuelle Guthaben einer bestimmten Kartenlaufnummer ausgewiesen bekommen.

0

Was möchtest Du wissen?