plugins/calendar

Thomas Brüderli bruederli at kolabsys.com
Fri Dec 21 17:52:23 CET 2012


 plugins/calendar/drivers/database/database_driver.php |   10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

New commits:
commit df3e58bdb97d546d258796a6a7b41285e6edbed3
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date:   Fri Dec 21 17:52:07 2012 +0100

    Use subquery instead of JOIN + COUNT (#1483)

diff --git a/plugins/calendar/drivers/database/database_driver.php b/plugins/calendar/drivers/database/database_driver.php
index 733aa2c..d6a4483 100644
--- a/plugins/calendar/drivers/database/database_driver.php
+++ b/plugins/calendar/drivers/database/database_driver.php
@@ -696,8 +696,9 @@ class database_driver extends calendar_driver
     }
 
     $result = $this->rc->db->query(sprintf(
-      "SELECT e.*, COUNT(a.attachment_id) AS _attachments FROM " . $this->db_events . " AS e
-       LEFT JOIN " . $this->db_attachments . " AS a ON (a.event_id = e.event_id OR a.event_id = e.recurrence_id)
+      "SELECT e.*, (SELECT COUNT(attachment_id) FROM " . $this->db_attachments . " 
+         WHERE event_id = e.event_id OR event_id = e.recurrence_id) AS _attachments
+       FROM " . $this->db_events . " AS e
        WHERE e.calendar_id IN (%s)
        AND e.$col=?",
        $cals
@@ -738,8 +739,9 @@ class database_driver extends calendar_driver
     $events = array();
     if (!empty($calendar_ids)) {
       $result = $this->rc->db->query(sprintf(
-        "SELECT e.*, COUNT(a.attachment_id) AS _attachments FROM " . $this->db_events . " AS e
-         LEFT JOIN " . $this->db_attachments . " AS a ON (a.event_id = e.event_id OR a.event_id = e.recurrence_id)
+        "SELECT e.*, (SELECT COUNT(attachment_id) FROM " . $this->db_attachments . " 
+           WHERE event_id = e.event_id OR event_id = e.recurrence_id) AS _attachments
+         FROM " . $this->db_events . " AS e
          WHERE e.calendar_id IN (%s)
          AND e.start <= %s AND e.end >= %s
          %s





More information about the commits mailing list