Andy: Immer neuesten Datensatz anzeigen

Hi,

ich habe folgende Tabelle für eine Homepage, in der die einzelnen Seiten abgespeichert werden.

S_id für eindeutige Seitenerkennung (Primärschlüssel, auto_increment)
einige felder für Titel, Inhalt, Autor usw. die meistens unterschiedlich sind
S_date für Erstellungsdatum
S_seite für Gruppierung

Es gibt von den Seiten unterschiedliche Versionen, die alle durch einen gleichen Wert S_seite erkennbar sind. Die neuere Seite hat einen höheren Wert in S_date.

Nun würde ich gerne eine Abfrage machen, die mir von jedem Wert in S_seite den neuesten Datensatz anzeigt.

momentan bin ich nur so weit, dass ich zwei abfragen machen muss:

1. SELECT S_seite, max(S_date) as maxdate  FROM seiten GROUP BY S_seite
2. SELECT * FROM seiten WHERE S_seite=$seite and S_date=$maxdate

geht dies in einer Abfrage?

Danke!

  1. Hi,

    ORDER BY ASC | DESC LIMIT 0,5

    Simone

  2. yo,

    momentan bin ich nur so weit, dass ich zwei abfragen machen muss:

    1. SELECT S_seite, max(S_date) as maxdate  FROM seiten GROUP BY S_seite
    2. SELECT * FROM seiten WHERE S_seite=$seite and S_date=$maxdate

    geht dies in einer Abfrage?

    ja, das gibt es und hört auf den den schönen namen korrelierende unterabfrage. nicht jede version des jeweiligen dbms kann aber unterabfragen, zum beispiel mysql erst ab 4.1.

    SELECT s1.*
    FROM seiten AS s1
    WHERE s1.S_date =
      (
      SELECT max(s2.S_date)
      FROM seiten AS s2
      WHERE s2.S_seite = s1.S_seite
      )

    Ilja

  3. Hallo

    Es gibt von den Seiten unterschiedliche Versionen, die alle durch einen gleichen Wert S_seite erkennbar sind. Die neuere Seite hat einen höheren Wert in S_date.

    Nun würde ich gerne eine Abfrage machen, die mir von jedem Wert in S_seite den neuesten Datensatz anzeigt.

    Du selektierst per WHERE S_seite=$seite zuerst, welche Seite gemeint ist. Danach ordnest du die gefundenen Zeilen (Datensätze) nach $_date (mittels ORDER BY und ASC/DESC für auf- und absteigend) und begrenzt die Menge der Zeilen per LIMIT auf den gewünschten Wert.

    Tschö, Auge

    --
    Die Musik drückt aus, was nicht gesagt werden kann und worüber es unmöglich ist zu schweigen.
    (Victor Hugo)
    Veranstaltungsdatenbank Vdb 0.1
    1. yo,

      Du selektierst per WHERE S_seite=$seite zuerst, welche Seite gemeint ist. Danach ordnest du die gefundenen Zeilen (Datensätze) nach $_date (mittels ORDER BY und ASC/DESC für auf- und absteigend) und begrenzt die Menge der Zeilen per LIMIT auf den gewünschten Wert.

      er will nicht für eine bestimmte seite den neuesten datensatz, sondern für alle seiten den jeweiligen neusten und das mit einer abfrage.

      Ilja