Mysql abfrage optimieren
bzw wenn ich group by weg lasse funktioniert es bis auf die tatsache das sich das Array welches ich auslese bei nem Topic mit hundert oder gar tausend antworten enorm groß wird und auf die Performance sich auswirkt.
Ich könnte das array beschneiden aber trotsdem ließt er ja erstmal alles aus der DB.
Ich könnte das array beschneiden aber trotsdem ließt er ja erstmal alles aus der DB.
Achso ... topid ist die Post-ID und id ist die Topic-ID
//Edit: Du kannst GROUP BY nicht weglassen, weil MAX() eine Aggregatfunktion ist.
Code: Alles auswählen
SELECT MAX(topid), id FROM thread_tabelle GROUP BY id ORDER BY ID ASC;
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Ich schmeiß' alles hin und...
... lasse es liegen
topid ist die id von der Tabelle Topic die die überschriften bzw. das betreff der Beiträge enthällt. Id ist die autoincrement id von threads also den inhalt der beiträge. Beim erstellen eines neuen Beitrags wird ein Eintrag in Topics gemacht und ein eintrag in threads in threads befindet sich dann die id von Topics also topid um wiederum einen bezug zum Titel zu haben.Miriam hat geschrieben:Achso ... topid ist die Post-ID und id ist die Topic-ID
Bei dieser methode hab ich wieder das problem das alle threads ausgelesen werden.Miriam hat geschrieben:Code: Alles auswählen
SELECT MAX(topid), id FROM thread_tabelle GROUP BY id ORDER BY ID ASC;
Dann ist doch das hier richtig.
Es werden zu allen IDs die maximale ID des Postings angezeigt.
Es werden zu allen IDs die maximale ID des Postings angezeigt.
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Ich schmeiß' alles hin und...
... lasse es liegen
Ja aber ich brauche ja den Inhalt des Threads user text posttime etc.
Wenn ich jetzt das Query erweitere nach meinen bedürfnissen:
dann erhalte ich wieder die alten threads und nicht die neusten
Wenn ich jetzt das Query erweitere nach meinen bedürfnissen:
Code: Alles auswählen
SELECT MAX(id), id, forid, subfor, topid, user, posttime, text, date_format(posttime, '%d.%m.%y - %H:%i') AS form_posttime FROM ".$praefix."threads WHERE subfor='".$subforid."' GROUP BY topid
Versuche:
Code: Alles auswählen
$sql = "SELECT MAX(id), forid, subfor, topid, user, text, date_format(posttime, '%d.%m.%y - %H:%i') AS form_posttime FROM ".$praefix."threads WHERE subfor='".$subforid."' GROUP BY topid";
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Ich schmeiß' alles hin und...
... lasse es liegen
Wir sollten erst einmal die Terminiologie klären:
- thread bedeutet topic/Thema
post bedeutet posting /Beitrag.
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Ich schmeiß' alles hin und...
... lasse es liegen
nicht ganzMiriam hat geschrieben:Wir sollten erst einmal die Terminiologie klären:
- thread bedeutet topic/Thema
post bedeutet posting /Beitrag.
Topic bedeutet Thema = Überschrift
Thread bedeutet Beitrag = Posting Inhalt
Laut Datenbankstrucktur von mir
Es soll der letzte Beitrag angezeigt werden davon aber nur Postdatum / User / ÜberschriftMiriam hat geschrieben: Es sollte also nur der letzte Beitrag mit der ID des dazugehörenden Themas angezeigt werden. (Zumindest war das meine Absicht mit der SQL Query.)