Sven Rautenberg: inner join bis heute nicht begriffen

Beitrag lesen

Moin!

Problem: Ich möchte auf der Hauptseite, (auf welcher die Foren angezeigt werden), eine zelle haben, die den letzten Beitrag aussagt. Das Problem liegt jetzt darin, zu filtern: ist der letzte Beitrag ein neues Thema, oder nur eine antwort, auf ein bestehendes Thema.

Tabellen:
[Themen]
id, forum_id, themen_titel, themen_datum, themen_uhrzeit, themen_inhalt, usw.

[Antwort]
id, themen_id, antwort_datum, antwort_uhrzeit, antwort_inhalt, usw

Frage zuerst: Ist dein "Forum" ein echtes Forum oder nur ein Board? Je nachdem ist deine Frage nämlich komplex oder sehr komplex. Wenn ich mir deine Tabellen so ansehe, dann sieht es so aus, als ob du nur ein Board hast.

Dein Problem läßt sich ganz simpel dadurch lösen, dass du (was mir in deiner Datenstruktur auf den ersten Blick fehlt) ein Feld hinzufügst, in dem verzeichnet ist, auf welche andere Nachricht die jeweilige Antwort eine Nachricht ist. Logischerweise haben Nachrichten, die ein neues Thema starten, dann keine Angabe in diesem Feld und können sehr leicht herausgefiltert werden (wenn du ein Board hast, reicht auch einfach ein simples Flag "ist neues Thema" vs. "ist Antwort"). Wie kriegst du denn derzeit alle Antworten entsprechend ihrer Aufreihung untereinander?

Diese Vorgehensweise ist insofern auch besser, weil sie wesentlich performanter sein dürfte als irgendein JOIN. Das hilft dir zwar nicht beim Verstehen von INNER JOINs, aber es löst dein Problem. :)

- Sven Rautenberg

--
Diese Signatur gilt nur am Freitag.