$sql = "SELECT p.product_id, (SELECT price FROM " . DB_PREFIX . "product_special ps WHERE ps.product_id = p.product_id";
$sql .= " AND ps.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW())";
$sql .= " AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special";
$sql .= " FROM " . DB_PREFIX . "product_to_category p2c";
$sql .= " LEFT JOIN " . DB_PREFIX . "product p ON (p2c.product_id = p.product_id)";
$sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id)";
$sql .= " LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id)";
$sql .= " WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1'";
$sql .= " AND p.quantity > 0 AND image IS NOT NULL AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'";
$sql .= " AND p2c.category_id = '" . (int)$data['filter_category_id'] . "'";
$sql .= " GROUP BY p.product_id";
$sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit'];
$query = $this->db->query($sql);
$sql .= " AND p2c.category_id = '" . (int)$data['filter_category_id'] . "'";
$sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit'];
var_dump($sql); exit;
$query = $this->db->query($sql);
Идете в пхпмайадмин или консоль мускуля, вставляете и выполняете. Хотя для начала убедитесь что все вставленные значения хоть как-то похожи на правду.