Thread DBIx::Class: ResultSet über eine relativierte Tabelle sorieren
(6 answers)
Opened by pktm at 2009-01-14 17:59
Ja, so in die Richtung sind meine Experimente auch schon gediegen, aber es gibt nicht exakt das aus, was ich suche.
Hier ist mein Ansatz: Code: (dl
)
1 my $rs = $schema->resultset('Thread')->search(undef, Wenn ich die group_by-Klausel weg lasse erhalte ich das Kreuzprodukt aus threads und posts, das will ich nicht. Ich will immer nur eine Liste aller Threads und deren aktuellesten Post. Das SQL-Statement dazu sieht so aus: [sql] SELECT subject, MAX(timestamp) as tmax FROM threads LEFT JOIN posts ON posts.thread_id = threads.thread_id where board_id = 17 group by threads.thread_id order by tmax DESC [/sql] Der Kniff ist, nach MAX(timestamp) sortieren zu können. Wie ich das DBIx::Class mitteile, habe ich noch nicht herausgefunden. Ich kann zwar die timestamp-Zelle mit selektieren, aber scheinbar kommt dann, trotz Sortierung nach timestamp DESC nicht das richtige Ergebnis. DBIx::Class produziert bei obigem Code folgendes: [sql] SELECT subject, timestamp, MAX( timestamp ) FROM threads me LEFT JOIN posts posts ON ( posts.thread_id = me.thread_id ) GROUP BY me.thread_id ORDER BY timestamp DESC [/sql] Da wird einfach nach der falschen Zelle sortiert :-s PS: das $schema->storage->debug(1); ist echt nützlich :) http://www.intergastro-service.de (mein erstes CMS :) )
|