繁体   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