Announcement

Collapse
No announcement yet.

Letzter Wert aus einer Datensatzliste

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Letzter Wert aus einer Datensatzliste

    Hallo

    in Access bekommt man den letzten Datensatz aus einer Auflistung mit "Last"
    Um das ganze in Oracle zu machen verwendet man "Least".
    Aber wie heißt der Befehl für den SQL-Server 7 ???????

    Gruß

  • #2
    Hallo,

    alle SQL-Datenbanken arbeiten mengenorientiert, und die Position eines Elements (Datensatzes) in der Menge ist unbestimmt. Der SQL-Standard sieht vor, dass erst die SELECT-Abfrage in der ORDER BY-Anweisung festlegt, welche Reihenfolge die einzelnen Datensätze in der Ergebnismenge haben. Somit hängt die Antwort auf die Frage "Wie erhalte ich den letzten Datensatz?" von dem verwendeten Primärschlüssel der Tabelle ab. In einer Einbenutzer-Umgebung könnte man den MAX-Wert suchen lassen, um nur ein Beispiel zu nennen

    Comment


    • #3
      Tja dann würde ich mal sagen SQl Server 7 Note 6, denn ich benötige diese Funktion. Ohne oder vergleichbares funktioniert das Board nicht mehr. Ich sage Dir auch wieso:

      In einer einer Beitragstabelle werden Threads und auch Antworten gespeichert. Jeder Beitrag erhält einen eindeutigen Wert und zwar eine BID zusätzlich wird dieser mit der Beitragsart Thread gekennzeichnet.

      Antwortet jemand auf einen Thread wird nicht nur dass Datum, die Beitragsart Antwort und der Username gespeichert, sondern die sog. AID ( Antwort-ID ) bekommt den Wert aus BID.

      Dadurch kann ich genau feststellen was Thread ist und welche AIDs dazu vorhanden sind. Im ersten Step werden nun alle Threads analysiert und gelistet (View:Threads1)
      Bei den Threads ist das nicht weiter schwirig, da es nur einen Eintrag geben kann

      SELECT Beitragsart, BID, FID,
      BID AS AID, [User] AS [LetzterWert von User],
      Datum, Headline, Count(Headline) AS [Anzahl von Headline],
      sperre, aktiv, [User]
      FROM Beiträge
      GROUP BY Beitragsart, BID, FID, Datum,
      Headline, sperre, aktiv, [User]
      HAVING (((Beiträge.Beitragsart)="thread")
      AND ((Beiträge.aktiv) Is Null Or (Beiträge.aktiv)="ja"))

      Jetzt kommt aber der Knackpunkt und zwar die View:Threads2
      Vom Grundprinzip hat Sie die gleiche Aufgabe wie Threads1, nur mit der einzigen Ausnahme, das es mehrere AIDs geben kann. Sie sucht jetzt nach allen Antworten. Und wenn ich nun für die Threadauflsitung im Netz, den maximalen Wert des Datums benötige kann ich nicht einfach daneben den Usernamen stellen, da Aggregar. Also bin gezwungen dort auch etwas anzugeben. Max, Min oder halt der letzte Wert, denn der knüpft an dass Datum an:

      SELECT AID, Max([User]) AS [LetzterWert von User],
      Max(Datum) AS [Max von Datum], Headline, Count(Beiträge.AID) AS [Anzahl von AID],
      Beitragsart, sperre, aktiv
      FROM Beiträge
      GROUP BY AID, Headline, Beitragsart, sperre, aktiv
      HAVING (((Beiträge.Beitragsart)="antwort") AND ((Beiträge.aktiv) Is Null Or (Beiträge.aktiv)="ja"))
      ORDER BY Max(Datum) DESC

      Max von User ist natürlich völliger blödsinn, da ich damit den username erhalte der den größten Anfangsbustaben hat.

      Was bitte kann ich jetzt tun, ich finde da keine guten Lösungsansätze mehr. Mir fällt einfach nix mehr ein.
      Auch wenn ich eine andere View erstelle und nur AID und Datum und User angebe, habe ich das gleiche Problem. Ich brauche das max von datum und dazu dann den user, egal wi

      Comment


      • #4
        Hallo,

        wenn <i>ORDER BY Max(Datum) DESC</i> angegeben wird, ist doch der "letzte" Datensatz der erste Datensatz in der Ergebnismenge, so dass der gesuchte Wert direkt ausgelesen werden kann

        Comment

        Working...
        X