簡體   English   中英

Opencart過濾器模塊查詢語句,價格和特殊價格范圍

[英]Opencart filter module query statement, price and special price range

感謝您停止我的問題:)

我正在為我的網上商店開發一個Opencart過濾器模塊,但是遇到了一個MySql查詢,有點麻煩了。

該腳本的目的是通過給定的過濾器憑據返回找到的產品數量:

  • 最低價格
  • 最高價
  • 類別編號
  • 制造商編號

我遇到的問題是在設置最低/最高價格時,如何獲得正確的產品計數。 這是因為某些產品正在銷售中。 這意味着它應該檢查價格是否在特價范圍內,而不是正常價格范圍內。

  • 特價列為“ ps.price”
  • 產品價格為“ 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM