SQL: Menge von Gruppierten Datensätzen erfassen
Frank
- datenbank
Hi folks!
ich stehe gerade vor einem Problem mit einer Datenbanktabelle. Es geht um darum verschiedene Versionen von Software zu verwalten.
Dazu habe ich eine Tabelle:
[ID,Software_Name,Version,Folder]
[1,WCDKR01,111,WCDKR01.111]
[2,WCDKR01,112,WCDKR01.112]
[3,WCDKR01,113,WCDKR01.111]*
[4,WCDKR02,109,WCDKR01.109]
[5,WCDKR02,111,WCDKR01.111]*
[6,WCDKR03,116,WCDKR01.116]
[7,WCDKR03,120,WCDKR01.120]*
Ich möchte jetzt davon die Datensätze mit den höchsten Versionen (also 3,5 und 7) als Ergebnisse...
Mit Select Top 10 ... Order by Version ASC würde ich ja schon mal näher kommen. Aber ich weiß ja nicht die Menge der Softwarepakete ansich, es können ja 50 Datensätze mit nur 5 verschiedenen Paketen sein, dann will ich auch nur 5 Ergebnisse haben.
Das Problem reduziert sich meiner Ansicht nach darauf mit einem SQL-Statement die Anzahl der gruppierten Software_Name zu ermitteln.
Genau darauf komme ich moment nicht.
Hat jemand von euch eine Idee??
Gruß aus Ulm,
Frank
Hallo,
Ich möchte jetzt davon die Datensätze mit den höchsten Versionen (also 3,5 und 7) als Ergebnisse...
Hat jemand von euch eine Idee??
Ja, die Leute, die SQL entwickelten. Die haben neben der GROUP BY-Klausel auch noch die Aggregat-Funktionen (MIN(),MAX(),SUM(),AVG(),COUNT()..) eingebaut.
Damit läßt sich das Problem "Gruppiere die Daten nach foldenden Feldern und gib' je Gruppe bei einem anderen Feld den MAximalwert aus" ziemlcih einfach lösen.
Grüße
Klaus
HI,
vielen Dank, du hast mir mit dem deinem Tip zu den Aggregatfunktionen auf die Sprünge geholfen, auch wenn ich eigentlich etwas anders zum Ziel gekommen bin...
Gruß,
Frank
Hallo,
Ich möchte jetzt davon die Datensätze mit den höchsten Versionen (also 3,5 und 7) als Ergebnisse...
Hat jemand von euch eine Idee??
Ja, die Leute, die SQL entwickelten. Die haben neben der GROUP BY-Klausel auch noch die Aggregat-Funktionen (MIN(),MAX(),SUM(),AVG(),COUNT()..) eingebaut.
Damit läßt sich das Problem "Gruppiere die Daten nach foldenden Feldern und gib' je Gruppe bei einem anderen Feld den MAximalwert aus" ziemlcih einfach lösen.
Grüße
Klaus
Hi, nochmal!!
für alle, die mal ein ähnliches Problem haben.... hier das SQL-Statement:
Software_Name,Version,Folder
SELECT
L_Packages.Software_Name,
Max(L_Packages.Folder) as highestVersion
FROM
L_Packages
WHERE
L_Packages.Software_Name in
(SELECT
L_Packages.Software_Name
FROM
L_Packages
GROUP BY
L_Packages.Software_Name)
GROUP BY
L_Packages.Software_Name;
als denn, viel Spaß
Frank