Sortieren über 2 Tabellen
Guten Tag,
nach längerer Suche im inzwischen kompletten Internet wäre ich den Usern dieses Forums sehr zum Dank verpflichtet wenn diese mir bei folgendem Problem helfen könnten: Für einen Teil meiner Projektarbeit gehört das Coden eines Forums dazu. Auf der Seite mit der Auflistung der momentanen Themen sollen diese nach dem "last poster" sortiert werden. Ich habe meine Tabellen wie folgt aufgebaut: Tabelle topic: Code:
id forum_id closed pinned Code:
id topic_id user_id created title text Wie man bereits sieht, ist eine Ausgabe aller Topics, sortiert nach dem Datum des letzten Post leider nicht so einfach möglich. Mein momentaner Code ohne die Sortierung lautet so: PHP-Code:
"SELECT * FROM topic ORDER BY [Letzter Post].created" Nach einigem Rumsuchen habe ich folgende Methode probiert: "SELECT post.* FROM post INNER JOIN topic ON post.topic_id=topic.id WHERE topic.pinned=0 AND topic.forum_id=$show ORDER BY post.created DESC" (Wobei ich sämtliche $row->id's zu $row->topic_id umändern musste) Diese Methode funktionierte auch, das Problem darin ist aber,dass er nunmal alle Posts nutzt, d.h. ich keinerlei Probleme habe solang ein Topic nur 1 Post hat, aber sobalt jemand darauf antwortet erscheint dies mehrmals. Beispiel: Code:
Thread1 posts:1 autor:keks lastpost:2005-02-10 16:23:04 Ich bin langsam mit meinem Rat am ende, habe schon ein GROUP BY probiert ("SELECT post.* FROM post INNER JOIN topic ON post.topic_id=topic.id WHERE topic.pinned=0 AND topic.forum_id=$show GROUP BY post.topic_id ORDER BY post.created DESC"), doch auch das macht fehler, es werden dann nämlich nur die ersten 2 und die letzten 2 Einträge angezeigt, d.h. die Sortierung ist falsch (bei den letzten 2 kommt zuerst der mit 2005-02-08 und dann der mit 2005-02-09) Ich weiß es ist evtl etwas viel verlangt und schlecht beschrieben, ich würde mich dennoch unheimlich über Hilfe freuen, ich bin momentan nämlich mit meinem Latein am ende. Mit freundlichen Grüßen Thomas |
AW: Sortieren über 2 Tabellen
wie wäre es, wenn du mit DISTINCT nur unterschiedliche ids raussuchst...
|
AW: Sortieren über 2 Tabellen
Du mußt die Abfrage mit GROUP BY erweitern, um die doppelten Einträge zu eliminieren. Poste doch mal einen Dump zum rumspielen.
|
AW: Sortieren über 2 Tabellen
Guten Morgen,
ich danke erstmal für die Beiträge :] Inzwischen steige ich leider irgendwie da nicht mehr durch. Habe meine Tabelle geleert und Systematisch Topics und Posts eingefügt. Das Problem mit den Doppelten Einträgen existiert zwar nicht mehr, aber ich habe herausgefunden das er nicht nach dem ältesten Post sortiert, sondern nach dem ersten Post. Ich weiß ehrlichgesagt nicht wo das Problem ist, habs auch mit nem zusätzlichen distinct dazu Probiert, aber evtl. sehe ich ja den Wald vor lauter Bäumen nicht. Hier erstmal ein link zum dump: Dump Und ein link zu einemnem Screenshot, welches das Problem evtl besser erläutert: Screenshot Ich danke schonmal für die investierte Zeit mit freundlichen Grüßen Thomas |
AW: Sortieren über 2 Tabellen
Ich kann die Tabellen nicht erzeugen, es hängt am COLLATE.
|
AW: Sortieren über 2 Tabellen
Zitat:
Man kann aber glaub den hinteren Teil (also den Teil hinter der abschließenden Klammer eines Creates) weglassen. Aus Code:
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=2 ; Code:
); Frage mich ohnehin für was dies gut ist :] mit freundlichen Grüßen Thomas |
AW: Sortieren über 2 Tabellen
Welche Spalten (aus welcher Tabelle) willst Du letztendlich mit Deiner Abfrage anzeigen?
|
AW: Sortieren über 2 Tabellen
Im Endeffekt möchte ich alle Topics auflisten lassen, welche aber nach dem created-Datum ihrer letzten Posts sortiert sein sollen.
|
AW: Sortieren über 2 Tabellen
PHP-Code:
|
AW: Sortieren über 2 Tabellen
Guten Tag,
erstmal möchte ich mich bei dir bedanken xabbuh für die Mühe. Es klappt auch soweit wie man die Threads in normaler Reihenfolge anzeigen möchte. Möchte man diese hingegen von hinten anzeigen (also mit nem DESC dran) gehts schief. Ich weiß langsam nicht so recht ob sich die mühe noch lohnt, oder ob man nicht einfach an jedes Topic ein LastPostDate anfügen sollte, dies würde wohl auch bei großer Datenmenge wesentlich schneller sein als ein rekursives suchen nach dem lastpost. Ich danke hiermit nochmals für die Hilfe. Schade das es nicht geklappt hatte wie ich dachte :] einen schönen Abend noch, Thomas |
Alle Zeitangaben in WEZ +2. Es ist jetzt 11:39:38 Uhr. |
Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.