habs gesehen gestern...nett das unsere mysqld unter zmysql lÀuft...man sieht grad obs wir sind oder nicht *g*, aber sag wie bringt man das eigentlich hin ?
sorry, ich hab den mysqld schon wieder crashen lassen. (verdammt)
jetzt weiss ich wenigstens in welcher region das problem liegt. und zwar hat er offenbar mĂŒhe mit join's von grösseren datenmengen. bei diesem query ist er gecrasht:
SELECT c.* FROM comments c LEFT JOIN comments t ON (t.thread_id=c.thread_id AND t.date>c.date) WHERE t.id IS NULL ORDER BY c.date DESC
Der Join lÀsst sich nicht schöner machen, trotz Index. Hab dasselbe mal vor ein paar Monaten probiert. Ich denke eine Thread Tabelle lÀsst sich nicht umgehen.
Die grosse Frage ist dann nur noch wie wirds mit den Non-Forum Posts machen.
die mĂŒssen auch einen eintrag in der thread-table haben. wichtig ist dafĂŒr nur die thread_id, der lastpost und das board. der rest kann man aus den anderen tables holen.
Normale Posts wĂŒrden dann einfach auch einen Thread generieren sobald er benötigt wird.
Seh ich das richtig, dass in der Thread Tabelle anschliessend hinterlegt ist, wohin (Forum, Wiki, Smarty ...) ein Thread gehört und seine ID.
Der eigentliche Content des Ersten Posts bleibt weiterhin als Eintrag in Comments.
Das Query kann auch gar nicht Funktionieren.
Es gibt nÀmlich hoffentlich keine t.id die NULL sind.
Höchstens solche die '0' sind, aber auch von denen gibts keine.
Was willst du denn genau mit dem Query machen?
Offensichtlich versucht er mit diesem Query sÀmtliche neuste Posts pro Thread nach deren Datum aufzulisten. Eigentlich noch elegant, wÀre nicht auf diese Lösung gekommen, aber schade wenns Performance-MÀssig nicht drinliegt.
Biko: Eventuell wĂŒrde ein Index (Thread_id, Date) etwas nĂŒtzen?
durch die bedingung t.date>c.date im join gibt es genau ein result pro thread, wo die t.id NULL ist. und das ist der datensatz, wo das datum am grössten ist. neben einem subquery (das es bei der installierten mysql-version nicht gibt) ist das die einzige möglichkeit den ganzen datensatz zum maximalen datum pro thread zu bekommen.
Mit dem eigenen Server hĂ€tten wir das Problem, das irgend jemand die Sache warten mĂŒsste genau gleich, und diese Person (ich nehm mal an wir wĂŒrden dich dafĂŒr anstellen) wĂ€r auch nicht gratis.
Hm, langsam begin ich das ganze zu begreifen.
Die Linke Seite wird immer Angezeigt, die Rechte jedoch nur wenn was gefunden wird.
Es gibt pro Thread genau einmal Rechts nichts, nÀhmlich da wo das Datum am grössten ist.
Ich hab (wie an den Letzten beiden DB PrĂŒfungen) den LEFt JOIN mit irgendwas anderem verwechselt..
Ich probiers mal mit einem Workaround.
Select *, max(date) as datum from comments group by thread_id order by datum desc
Liefert den Neusten Post pro Thread, und ich finds es ist ziemlich schnell.
Ich nehme mir gerne die Zeit dir alles was wir machen Schritt fĂŒr Schritt zu erklĂ€ren, wenn du auch was tust. Ansonsten ist das herausgeworfene Zeit.
Er hat geschaut ob er die Forum-Ăbersicht machen kann dass posts aus allen Board drin kommen.
es sind schon alle posts drin. aber wir brauchen noch die trhead-info. z.b. den title aus dem smarty.
das hauptproblem liegt darin, den neuesten post zu finden. das ist auch der haupt-grund, wieso wir ne thread-table wollen. wenn das da funktionieren wĂŒrde, brĂ€uchten wir keine threads-table.
group by kann nicht zwei datensÀtze verhÀngen. du könntest ja auch SELECT *, min(date), max(date), count(date) machen. welcher sollte er dann nehmen?