1 up | 2 up | 3 up | 4 up |
^^^ Additional posts ^^^
zorg.ch
#39709 by @ 27.07.2004 13:31 - nach oben -
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?
zorg.ch
#39717 by @ 27.07.2004 13:55 - nach oben -
weiss nicht, wie viel ein index performance- und vor allem stabiliäts-mässig bringen würde...
zorg.ch
#39719 by @ 27.07.2004 14:05 - nach oben -
EXPLAIN! :P
zorg.ch
#39723 by @ 27.07.2004 14:09 - nach oben -
Wäre noch interessant zum testen, aber ich biko möchte wohl nicht nochmals riskieren dass der mysql abkratzt... ich sage: nur zu! :-)
zorg.ch
#39726 by @ 27.07.2004 14:12 - nach oben -
Ich kann ihn dann ja mal wieder neustarten ;)
zorg.ch
#39729 by @ 27.07.2004 14:14 - nach oben -
:-) biko looooooooos!
zorg.ch
#39809 by @ 27.07.2004 15:36 - nach oben -
yea, fett. mit index tuts! jetzt brauchen wir doch keine threads-table.
zorg.ch
#39811 by @ 27.07.2004 15:39 - nach oben -
sehr gut! baust dus gleich ein?
zorg.ch
#39812 by @ 27.07.2004 16:00 - nach oben -
kann ich machen. woher soll ich bei templates und gallery das thread-datum und den thread-starter nehmen? bei templates kann dafür die daten des templates nehmen. aber für die pics?
zorg.ch
#39814 by @ 27.07.2004 16:02 - nach oben -
das älteste datum...und dich als thread-starter, schliesslich hast du die gallerys gebaut.
zorg.ch
#39820 by @ 27.07.2004 16:06 - nach oben -
Ich würde eher das Datum der ersten Posts nehmen als das image upload-datum, weils ja um den Thread geht, nicht um das Pic.
zorg.ch
#39813 by @ 27.07.2004 16:01 - nach oben -
das lastpost-feld brauchts übrigens von mir aus auch nicht mehr. bevor wir das aber löschen, musst du das auch überall aus dem code nehmen.
zorg.ch
#39815 by @ 27.07.2004 16:03 - nach oben -
moment, ist das ganze mit deinem query auch schnell ?
zorg.ch
#39816 by @ 27.07.2004 16:05 - nach oben -
der phpmyadmin gibt bei limit 30 eine abfragezeit von 0.2245 sek an.
zorg.ch
#39823 by @ 27.07.2004 16:10 - nach oben -
Könnten wir uns einigen solche Sachen künftig in den Bugtracker einzutragen? Dann muss ichs nämlich nicht in meine Agenda eintragen.
zorg.ch
#39826 by @ 27.07.2004 16:13 - nach oben -
ok
zorg.ch
#39835 by @ 27.07.2004 17:21 - nach oben -
Ok.... also keine Thread-Table... aber es wäre vielleicht trotzdem edel eine zu haben...
Wir hätten dort drin: foreign_thread_id und was noch?
zorg.ch
#39716 by @ 27.07.2004 13:54 - nach oben -
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.
zorg.ch
#39721 by @ 27.07.2004 14:06 - nach oben -
Ihr koennt ne andere Version haben, wenn ihr den Aufwand bezahlt ;)

(Das Problem haettet ihr jetzt mit einem eigenen Server nicht :P)
zorg.ch
#39722 by @ 27.07.2004 14:07 - nach oben -
ja...aber neimand sagt das der mysqld auf einem eigenen server nicht abkackt...aber lassen wir diese diskussion...
zorg.ch
#39724 by @ 27.07.2004 14:11 - nach oben -
Lern lesen ;)

Biko ging es um Subqueries, nicht ums abstuerzen.
zorg.ch
#39727 by @ 27.07.2004 14:13 - nach oben -
ist mir schon klar...aber ich meinte das es nicht erwiesen ist, das dieses query mit subquerys stabil läuft...
zorg.ch
#39738 by @ 27.07.2004 14:26 - nach oben -
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.
zorg.ch
#39750 by @ 27.07.2004 14:37 - nach oben -
Lesen, dann Posten
zorg.ch
#39754 by @ 27.07.2004 14:44 - nach oben -
Du bietest uns deine Unterstützung an, da steht aber nichts davon dass du das auch gratis machts.
zorg.ch
#39761 by @ 27.07.2004 14:56 - nach oben -
Gut, es war so gemeint :)
zorg.ch
#39766 by @ 27.07.2004 15:00 - nach oben -
Eben, also bringt uns ein eigener Server in dem Punkt keinen Vorteil.
zorg.ch
#39794 by @ 27.07.2004 15:15 - nach oben -
Also..

Entweder bin ich immer noch zu muede um mich gescheit auszudruecken, oder du willst mich momentan einfach falsch verstehen.

Ich probiers nochmal:

Ich (Lukas Beeler), wuerde falls ihr (der Zooomclan) euch einen eigenen Server (bei Sylon oder einer anderen Firma, von mir aus auch einem privaten) auf euren (des Zooomclans) Wunsch hin die Wartung (Administration, Upgrades, etc.) als Freundschaftsdienst (d.h. ohne das fuer euch irgendwelche Kosten entstehen, ausgenommen natuerlich HW Einkaeufe, Ersatzteile, etc. pp.) uebernehmen.
zorg.ch
#39801 by @ 27.07.2004 15:20 - nach oben -
danke! das du es nochmals für tschuder erklärt hast...;-)
zorg.ch
#39822 by @ 27.07.2004 16:09 - nach oben -
Ich habe schon verstanden was du meinst.
Allerdings wollte ich dir zeigen, dass in diesem Post NICHT stand, dass du das ganze Gratis machst.
zorg.ch
#39830 by @ 27.07.2004 16:26 - nach oben -
Es war aber so gemeint. :P
zorg.ch
#39832 by @ 27.07.2004 16:36 - nach oben -
Das ist nett von dir...
zorg.ch
#39834 by @ 27.07.2004 17:06 - nach oben -
Dem schliesse ich mich an.
zorg.ch
#40275 by @ 31.07.2004 14:40 - nach oben -
Du hast Glück (#40265), dass ich jetzt nicht anfange, darüber zu diskutieren.
Aber mit Rootserver hätten wir sicher weniger Probleme.
zorg.ch
#40368 by @ 01.08.2004 15:40 - nach oben -
Hätten wir ganz bestimmt.
Falls du dich nicht mehr an die Fraggeria II erinnern kannst, ich gehör jetzt auch zu den Rootserver Befürwortern.
zorg.ch
#39752 by @ 27.07.2004 14:42 - nach oben -
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.
zorg.ch
#39760 by @ 27.07.2004 14:56 - nach oben -
Sieht gut aus, bin nicht sicher obs nicht so schon drin ist. Ich schau mal am Abend.
zorg.ch
#39770 by @ 27.07.2004 15:01 - nach oben -
Wenns ja schon Funktioniert, was hat dann der Biko gemacht?
zorg.ch
#39781 by @ 27.07.2004 15:07 - nach oben -
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.
zorg.ch
#39793 by @ 27.07.2004 15:14 - nach oben -
Weshalb sind denn bei meiner Selektion nicht Posts aus allen Boards drin?
Eigentlich haben wird doch noch gar keine Boards..
zorg.ch
#39798 by @ 27.07.2004 15:17 - nach oben -
*seufz* mit boards meinen wir gallery, smarty etc. Bei deiner Selektion sind posts aus allen boards drin.
zorg.ch
#39818 by @ 27.07.2004 16:05 - nach oben -
Ich weiss was mit Boards gemeint ist. Deshalb war ich überrascht als du sagtest dass deine Selektion gleich aussieht und trotdem nicht die Posts aus allen Boards zusammengezogen wurden.
zorg.ch
#39821 by @ 27.07.2004 16:08 - nach oben -
Wieso wohl? Ich hatte bisher ein "WHERE board = 'f'" drin.
zorg.ch
#39824 by @ 27.07.2004 16:10 - nach oben -
Und weshalb hast du das nicht einfach rausgenommen, dann häts alle Boards angezeigt und das Problem wär vom Tisch.
Additional posts
zorg.ch
#39806 by @ 27.07.2004 15:25 - nach oben -
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.
zorg.ch
#39782 by @ 27.07.2004 15:07 - nach oben -
das tut nicht. und zwar nimmt er den * nicht vom gleichen datensatz wie das max(date) drin ist.
zorg.ch
#39792 by @ 27.07.2004 15:14 - nach oben -
nicht? group by sollte das doch bewerkstelligen?
zorg.ch
#39800 by @ 27.07.2004 15:18 - nach oben -
tut er aber nicht, habs grad angeschaut....
zorg.ch
#39802 by @ 27.07.2004 15:20 - nach oben -
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?
zorg.ch
#39805 by @ 27.07.2004 15:24 - nach oben -
SELECT *, min(date), max(date), count(date)
bringt nichts, aber das:

SELECT thread_id, max( lastpost ) AS lastpost
FROM `comments`
GROUP BY thread_id
ORDER BY lastpost DESC LIMIT 0 , 30

(* in ner group by drin zu haben ist glaub uncool)
zorg.ch
#39807 by @ 27.07.2004 15:28 - nach oben -
* in ner group gibt dir einfach irgend ein datensatz aus der group.

deine variante tut, weil die thread_id ja in jedem datensatz der group gleich ist. aber jetzt hast du noch keine infos welches der letzte post ist.
zorg.ch
#39810 by @ 27.07.2004 15:39 - nach oben -
Jo klar, so müsste mans dann glaub machen: (statt lastpostdate natürlich mit lastpostid)

SELECT comments.board, comments.thread_id, max( comments.lastpost ) AS lastpostdate, lastpost.id AS lastpostid, lastpost.text

FROM `comments`
LEFT JOIN comments AS lastpost ON ( lastpost.date = comments.lastpost )
GROUP BY comments.thread_id
ORDER BY lastpostdate DESC
LIMIT 0 , 30