Frank: SQL: Menge von Gruppierten Datensätzen erfassen

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

  1. 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

    1. 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

      1. 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