[英]Opencart filter module query statement, price and special price range
感謝您停止我的問題:)
我正在為我的網上商店開發一個Opencart過濾器模塊,但是遇到了一個MySql查詢,有點麻煩了。
該腳本的目的是通過給定的過濾器憑據返回找到的產品數量:
我遇到的問題是在設置最低/最高價格時,如何獲得正確的產品計數。 這是因為某些產品正在銷售中。 這意味着它應該檢查價格是否在特價范圍內,而不是正常價格范圍內。
產品價格為“ p.price”
$query = $this->db->query("SELECT *, count(p.product_id) as count FROM " . DB_PREFIX . "manufacturer m LEFT JOIN " . DB_PREFIX . "manufacturer_to_store m2s ON (m.manufacturer_id = m2s.manufacturer_id) LEFT JOIN " . DB_PREFIX . "product p ON (m.manufacturer_id = p.manufacturer_id) LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p2c.product_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_special ps ON (ps.product_id = p.product_id) WHERE m2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND m.manufacturer_id = '" . $manufacturer_id . "' AND (ps.price BETWEEN '" . $min_price . "' AND '" . $max_price . "') AND (p.price BETWEEN '" . $min_price . "' AND '" . $max_price . "') AND p.status = 1 "); $manufacturer_data = $query->rows;
我需要的是,如果不為null,則只能從ps.price中進行選擇,否則從p.price列中進行選擇
提前致謝 :)
試試這個查詢...
$query = $this->db->query("
SELECT *, CASE WHEN ps.price IS NULL THEN p.price ELSE ps.price END product_price
FROM " . DB_PREFIX . "manufacturer m
LEFT JOIN " . DB_PREFIX . "manufacturer_to_store m2s ON (m.manufacturer_id = m2s.manufacturer_id)
LEFT JOIN " . DB_PREFIX . "product p ON (m.manufacturer_id = p.manufacturer_id)
LEFT JOIN " . DB_PREFIX . "product_special ps ON (ps.product_id = p.product_id)
WHERE m2s.store_id = '" . (int)$this->config->get('config_store_id') . "'
AND m.manufacturer_id = '" . $manufacturer_id . "'
AND (product_price BETWEEN '" . $min_price . "' AND '" . $max_price . "')
AND p.status = 1
");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.