[Cpan-forum-commit] rev 215 - in trunk: . lib/CPAN/Forum/DB

svn at pti.co.il svn at pti.co.il
Thu Aug 31 01:27:15 IDT 2006


Author: gabor
Date: 2006-08-31 01:27:14 +0300 (Thu, 31 Aug 2006)
New Revision: 215

Modified:
   trunk/
   trunk/lib/CPAN/Forum/DB/Posts.pm
Log:
change the latest_thread query to work better..



Property changes on: trunk
___________________________________________________________________
Name: svk:merge
   - 8c4c90e1-83eb-0310-96eb-e7cb62807872:/local/cpan-forum:11095
   + 8c4c90e1-83eb-0310-96eb-e7cb62807872:/local/cpan-forum:11096

Modified: trunk/lib/CPAN/Forum/DB/Posts.pm
===================================================================
--- trunk/lib/CPAN/Forum/DB/Posts.pm	2006-08-30 22:27:11 UTC (rev 214)
+++ trunk/lib/CPAN/Forum/DB/Posts.pm	2006-08-30 22:27:14 UTC (rev 215)
@@ -11,7 +11,20 @@
 __PACKAGE__->has_a(gid    => "CPAN::Forum::DB::Groups");
 
 __PACKAGE__->set_sql(latest         => "SELECT __ESSENTIAL__ FROM __TABLE__ ORDER BY DATE DESC LIMIT %s");
-__PACKAGE__->set_sql(latest_threads => "SELECT __ESSENTIAL__ FROM __TABLE__ WHERE parent is NULL ORDER BY DATE DESC LIMIT ?");
+#__PACKAGE__->set_sql(latest_threads => "SELECT A.id, A.thread, A.date FROM posts A WHERE 
+#            thread IN (SELECT DISTINCT B.thread FROM posts B ORDER BY B.date DESC LIMIT ?) 
+#            AND 
+#            id IN (SELECT max(id) FROM posts C WHERE C.thread=A.thread)
+#            ORDER BY A.date DESC");
+
+__PACKAGE__->set_sql(latest_threads => "SELECT A.id, A.thread, A.date FROM posts A WHERE 
+            thread IN (
+                SELECT DISTINCT X.thread FROM posts X WHERE X.thread IN (
+                    SELECT B.thread FROM posts B ORDER BY B.date DESC LIMIT ?)) 
+            AND 
+            id IN (SELECT max(id) FROM posts C WHERE C.thread=A.thread)
+            ORDER BY A.date DESC");
+
 __PACKAGE__->set_sql(count_thread   => "SELECT count(*) FROM __TABLE__ WHERE thread=%s");
 __PACKAGE__->set_sql(count_where    => "SELECT count(*) FROM __TABLE__ WHERE %s='%s'");
 __PACKAGE__->set_sql(count_like     => "SELECT count(*) FROM __TABLE__ WHERE %s LIKE '%s'");
@@ -66,4 +79,3 @@
 
 1;
  
-



More information about the Cpan-forum-commit mailing list