Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
07.02.2007, 17:07
Horat



Nabend,

ich habe ein kleineres Problem mit einem Query:
Das ganze dreht sich um die ThWBoard-Datenbankstruktur, um genauer zu sein um thwb_post und thwb_thread.
Ich brauche alle Threads in einem bestimmten Board (sprich boardid=0815) sowie den aller ersten Post in diesem Thread, also den Post, den der Autor des Threads geschrieben hat.

Mein bisheriger Query sieht folgender maßen aus:
Quellcode:SELECT t.threadid, t.threadtopic, t.threadauthor, t.threadreplies, t.threadclosed, t.threadcreationtime, p.posttext
FROM tb_thread AS t
LEFT JOIN tb_post AS p ON (t.threadid=p.threadid)
WHERE t.boardid=0815
GROUP BY t.threadid
ORDER BY t.threadcreationtime DESC, p.posttime DESC
LIMIT 0, 25
Leider kommt dabei nicht der erste Post des Threads raus, sondern irgend ein anderer; ich weiß nicht, ob es ein bestimmter anderer oder ein zufällig anderer Post des Threads ist.

Ich weiß mir nicht mehr zu helfen. Hilfe wäre nett, Danke.
MfG
SEeEL

--

Bild Blog <--

zum Seitenanfang zum Seitenende Profil || Suche
001
07.02.2007, 17:34
theDon



Du solltest dann auch schon aufsteigend nach posttime sortieren, wenn du den ersten Post haben moechtest. Wenn du absteigend sortierst, kommt der letzte Post im Thread raus.

--

\o tanz den naziprau! o/

And more than ever, I hope to never fall,
Where enough is not the same it was before

zum Seitenanfang zum Seitenende Profil || Suche
002
07.02.2007, 19:02
Horat



Da bekomme ich leider die selben Results. Das Problem liegt ja auch nicht bei der Abfrage der thwb_thread Tabelle. Alle Felder aus dieser Tabelle stimmen auch und liefern genau die Ergebnisse, die ich haben will.
Das einzige, was nicht stimmt ist eben posttext.
Und rumfummeln an dem ORDER BY habsch schon versucht -.-

--

Bild Blog <--

zum Seitenanfang zum Seitenende Profil || Suche
003
07.02.2007, 22:09
Chronial



Na, das geht so auch nicht...

Also entweder brauchst du dafür eine Subquery, oder das thwboard markiert den ersten Beitrag irgendwie (kenn die thwboard Struktur leider nicht). Mit ORDER BY geht das auf jeden Fall nicht (das ORDER Wird nach dem GROUP angewendet).

kannst ja mal das versuchen:
Quellcode:SELECT t.threadid, t.threadtopic, t.threadauthor, t.threadreplies, t.threadclosed, t.threadcreationtime, p.posttext
FROM tb_thread AS t
LEFT JOIN tb_post AS p ON (t.threadid=p.threadid)
WHERE t.boardid=0815 AND p.posttime = t.threadcreationtime
ORDER BY t.threadcreationtime DESC
LIMIT 0, 25

--

"tsuji-giri" (japanisch) - ein neues Schwert an einem Passanten ausprobieren

zum Seitenanfang zum Seitenende Profil || Suche
004
09.02.2007, 15:59
Horat



Danke für die Hilfe.
Ich habe das Problem jetzt mit einem Subquery gelöst. Das erfüllt zwar nicht ganz meine Vorstellungen, aber es funktioniert.

Gibt es denn keine Möglichkeit diese Abfrage in einem einzigen Query zu machen? Das Ganze ist für eine Suchfunktion geplant und da ist die Performance bekanntlich recht ausschlaggebend. Oder ist ein Subquery im Vergleich mit einem einzigen Query in dieser Sache eher unerheblich?

--

Bild Blog <--

zum Seitenanfang zum Seitenende Profil || Suche
005
09.02.2007, 19:06
Chronial



Hast du mein Query versucht?

--

"tsuji-giri" (japanisch) - ein neues Schwert an einem Passanten ausprobieren

zum Seitenanfang zum Seitenende Profil || Suche
006
11.02.2007, 18:03
Horat



Ja, das geht leider nicht, weil das ThWB komischerweise unterschiedliche Timestamps für die Thread- und Posterstellung speichert.

[edit]
Mmh anscheinend funktionierts doch. Hätte schwören können, dass es beim ersten mal nicht geklappt hat -.- Danke für die Hilfe

--

Bild Blog <--


Dieser Beitrag wurde am 11.02.2007 um 18:23 von SEeEL bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche