Mysql abfrage optimieren

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Benutzeravatar
rox²³
Mitglied
Beiträge: 347
Registriert: 24.07.2003 15:18
Wohnort: Schmölln
Kontaktdaten:

Beitrag von rox²³ »

Funktioniert auch nicht der inhalt der ausgelesen wird bleibt gleich bis auf das was hinter MAX in den klammern steht.
Benutzeravatar
rox²³
Mitglied
Beiträge: 347
Registriert: 24.07.2003 15:18
Wohnort: Schmölln
Kontaktdaten:

Beitrag von rox²³ »

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.
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

Achso ... topid ist die Post-ID und id ist die Topic-ID

Code: Alles auswählen

SELECT MAX(topid), id FROM thread_tabelle GROUP BY id ORDER BY ID ASC;
//Edit: Du kannst GROUP BY nicht weglassen, weil MAX() eine Aggregatfunktion ist.
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
rox²³
Mitglied
Beiträge: 347
Registriert: 24.07.2003 15:18
Wohnort: Schmölln
Kontaktdaten:

Beitrag von rox²³ »

Miriam hat geschrieben:Achso ... topid ist die Post-ID und id ist die Topic-ID
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:

Code: Alles auswählen

SELECT MAX(topid), id FROM thread_tabelle GROUP BY id ORDER BY ID ASC;
Bei dieser methode hab ich wieder das problem das alle threads ausgelesen werden.
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

Dann ist doch das hier richtig.
Es werden zu allen IDs die maximale ID des Postings angezeigt.
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
rox²³
Mitglied
Beiträge: 347
Registriert: 24.07.2003 15:18
Wohnort: Schmölln
Kontaktdaten:

Beitrag von rox²³ »

Ja aber ich brauche ja den Inhalt des Threads user text posttime etc.

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
dann erhalte ich wieder die alten threads und nicht die neusten
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

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
Benutzeravatar
rox²³
Mitglied
Beiträge: 347
Registriert: 24.07.2003 15:18
Wohnort: Schmölln
Kontaktdaten:

Beitrag von rox²³ »

Gleiches Problem wieder nur die ersten Threads werden angezeigt :-?
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

Wir sollten erst einmal die Terminiologie klären:
  • thread bedeutet topic/Thema
    post bedeutet posting /Beitrag.
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.)
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
rox²³
Mitglied
Beiträge: 347
Registriert: 24.07.2003 15:18
Wohnort: Schmölln
Kontaktdaten:

Beitrag von rox²³ »

Miriam hat geschrieben:Wir sollten erst einmal die Terminiologie klären:
  • thread bedeutet topic/Thema
    post bedeutet posting /Beitrag.
nicht ganz
Topic bedeutet Thema = Überschrift
Thread bedeutet Beitrag = Posting Inhalt
Laut Datenbankstrucktur von mir
Miriam 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.)
Es soll der letzte Beitrag angezeigt werden davon aber nur Postdatum / User / Überschrift
Antworten

Zurück zu „Coding & Technik“