Thomas Luethi: Distict oder Group By sortieren

Beitrag lesen

Hallo,

Siehe unten, wo die Tabellenstrucktur ist.
Denke mal es liegt daran, dass ich nur eine Tabelle für das Forum/  Board benutze.

Ja, das DB-Design ist wohl nicht ganz optimal.

Das Prinzip eines einfachen "richtigen" Forums mit Threads und Baumstruktur
ist beschrieben unter:
http://aktuell.de.selfhtml.org/artikel/phpasp/php-forum/index.htm

In welcher Form ist die Zeit gespeichert?

Es ist die Unixzeit die in der Dazenbank als varchar(10) gespeichert wird.
Es läuft gut, also sah ich keinen Grund das zu ändern.

Fuer Zeitpunkte nimmt man am besten das DATETIME Format.
Dann kann man auch gleich in der SQL-Query am einfachsten
Daten vergleichen u.s.w.

»» »» "ORDER BY thema, abszeit" sortiert zuerst nach thema, und dann innerhalb

eines Themas nach dem Datum. Das ist vermutlich, was Du willst.

Das sollte ich mal versuchen.
Mir ist heute morgen nach dem Aufwachen aufgefallen,
dass ich einen Denkfehler habe. Vielleicht klappt es auf deinem Weg.
Das muss ich heute abend testen.

Tue das.

Der Denkfehler wird der sein:
Ich frage ja mit WHERE ab, ob Datnsätze älter oder neuer als eine Bestimmte Zeit sind.
Da zu einem Thema aber beides der Fall seien kann, bekomme ich doppelte Einträge raus.

Ja, das sehe ich auch als das Problem.

Ich muss mir also eine andere Struktur für die Abfrage einfallen lassen.

Oder besser gleich ein anderes DB-Design.

Ich hoffe du verstehst was ich meine, auch wenn alles vielleicht etwas wirr von mir beschrieben wird.

Ja, langsam sehe ich, was Du willst.
Ich stosse aber mit meinen SQL-Kenntnissen an die Grenzen,
vielleicht kann sonst noch jemand weiterhelfen...

Wie sieht Deine Datenbank-Tabelle aus?

  • nummer + main + name + thema + nachricht + abszeit +

+1       +1     +Max   +Thema1 + Text1     +10283729 +
+2       +1     +Hans  +Thema1 + Text2     +10284729 +
+3       +2     +Klaus +Thema2 + Text3     +10223729 +
+4       +2     +Karl  +Thema2 + Text4     +10284549 +

Wenn Du wirklich nur diese eine Tabelle hast, musst Du
evtl. wirklich mit DISTINCT arbeiten.
Ein Versuch waere z.B. folgendes (aus dem hohlen Bauch):

SELECT thema, main DISTINCT FROM Tabelle
  WHERE abszeit<$grenzzeit
  ORDER BY abszeit DESC, main.

Als Hilfsmittel/Kruecke koenntest du eine zusaetzliche Spalte
"letztzeit" machen, in der Du jeweils (bei allen Zeilen zu
einem bestimmten Thread) das Datum speicherst,
an dem in dem betreffenden Thread/Thema etwas hinzukam.

Doch wie gesagt, wahrscheinlich solltest Du eine bessere
Tabellenstruktur ohne Redundanz aufbauen.

Gruesse,

Thomas