<?php $sql = sprintf('SELECT COUNT(t.id) FROM %s t LEFT JOIN %s AS v ON (v.id = t.vessel_id) LEFT JOIN %s AS c ON (c.id = t.customer_id) LEFT JOIN %s AS a ON (a.id = t.agent_id) LEFT JOIN %s AS ta_a ON (ta_a.tracking_id = t.id AND ta_a.action = %d) LEFT JOIN %s AS ta_d ON (ta_d.tracking_id = t.id AND ta_d.action = %d) LEFT JOIN %s AS ta_dock ON (ta_dock.id = (SELECT id FROM %s WHERE tracking_id = t.id AND (action = %d OR action = %d OR action = %d) ORDER BY time_begin DESC LIMIT 1)) LEFT JOIN %s AS d ON (d.id = ta_dock.dock_id) LEFT JOIN %s AS d_t ON (ta_dock.dock_tracking_id IS NOT NULL AND d_t.id = ta_dock.dock_tracking_id) LEFT JOIN %s As d_v ON (d_v.id = d_t.vessel_id) WHERE t.deleted = 0 AND (%s)', self::TABLE, Vessel::TABLE, Customer::TABLE, Customer::TABLE, TrackingAction::TABLE, TrackingAction::ACTION_ARRIVAL, TrackingAction::TABLE, TrackingAction::ACTION_DEPARTURE, TrackingAction::TABLE, TrackingAction::TABLE, TrackingAction::ACTION_ARRIVAL, TrackingAction::ACTION_DOCK, TrackingAction::ACTION_DOCK_VESSEL, Dock::TABLE, self::TABLE, Vessel::TABLE, !is_null($dbSearch) ? $dbSearch->getWhereSQL() : '1=1', !is_null($dbSearch) ? $dbSearch->getOrderLimitSQL() : '');