phpbar.de logo

Mailinglisten-Archive

Sortierproblem

Sortierproblem

Hans Bickel mysql-de_(at)_lists.bttr.org
Mon, 15 Apr 2002 19:04:02 +0200


Ralf Eggert wrote:

> Hallo Liste,
>
> ich stehe gerade irgendwie auf dem Schlauch. Ich habe folgende Tabelle
> (vereinfacht dargestellt) in der Anfragen abgelegt werden:
>
> anf_id          mediumint(8)
> anf_haupt_id    mediumint(8)
> anf_status      enum('neu', 'bearbeitet', 'abgeschlossen')
> anf_datum       datetime
>
> Der Bearbeiter soll die Anfragen speichern koennen, wobei bei jedem
> Speichern der aktuelle Stand als neuer Datensatz gesichert wird, um
> spaeter eine Aenderungshistorie zu erhalten. Ich weiss, dass man dies
> auch anders loesen kann, momentan ist es aber so, dass fuer jeden
> Speicherschritt ein neuer Eintrag in der Tabelle erfolgt.
>
> Die Tabelle ist in etwa so gefuellt.
>
> anf_id    anf_haupt_id    anf_status      anf_datum
> ==============================================================
> 1         1               neu             2002-04-14 15:15:15
> 2         2               neu             2002-04-14 15:16:10
> 3         1               bearbeitet      2002-04-14 15:17:29
> 4         4               neu             2002-04-14 15:18:51
> 5         2               bearbeitet      2002-04-14 15:20:54
> 6         1               abgeschlossen   2002-04-14 15:21:26
>
> In einer Uebersichtsseite moechte ich nun fuer jede Anfrage jeweils den
> aktuellsten Speicherstand haben. Es sollen also folgende Saetze gelesen
> werden (sortiert nach Datum):
>
> anf_id    anf_haupt_id    anf_status      anf_datum
> ==============================================================
> 6         1               abgeschlossen   2002-04-14 15:21:26
> 5         2               bearbeitet      2002-04-14 15:20:54
> 4         4               neu             2002-04-14 15:18:51
>
> Leider bekomme ich mit folgender Abfrage nicht das gewuenschte
> Ergebnis. Er selektiert teilweise eben nicht die letzte Aenderung einer
> Anfrage:
>
>   SELECT anf_id, anf_haupt_id, anf_datum, anf_status
>   FROM fg_anfrage
>   WHERE anf_id > 0
>   GROUP BY anf_haupt_id
>   ORDER BY anf_datum DESC
>

Hallo Ralf,
dein Problem ist nicht ganz einfach und eine
elegante Lösung hab ich auch nicht gefunden.
Probier mal folgendes:

SELECT anf_id, anf_haupt_id,
MIN(anf_status) AS status, MAX(anf_datum) AS datum
FROM fg_anfrage GROUP BY anf_haupt_id
ORDER BY anf_datum

Grüsse

Hans

---
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 



php::bar PHP Wiki   -   Listenarchive