见我的回答如下。
背景
任何熟悉禅宗车会知道它来完全与又名阿尔法下拉分拣机是世界上最没有意义的产品排序选项。
基本上,这样做可以让你选择产品的字母/数字,他们开始。那么,当我购物时,物品的首字母几乎不是一个有用的标准,所以我正在尝试创建一个更有用的产品分拣机,它将根据添加的日期,价格和产品名称进行分类。然后根据属性类别进行过滤。
问题
所以我已成功地迫使分拣机做我自己的查询,这是工作的一切,除了价格。
这里是我的当前设置为代价产生的SQL下拉:
SELECT DISTINCT p.products_id, p.products_type, p.master_categories_id
,p.manufacturers_id, p.products_price, p.products_tax_class_id
,pd.products_description
,IF(s.status = 1, s.specials_new_products_price, NULL)
AS specials_new_products_price
,IF(s.status =1, s.specials_new_products_price, p.products_price)
AS final_price
,p.products_sort_order
,p.product_is_call
,p.product_is_always_free_shipping
,p.products_qty_box_status
FROM products p
LEFT JOIN specials s on p.products_id = s.products_id
LEFT JOIN products_description pd on p.products_id = pd.products_id
JOIN products_to_categories p2c on p.products_id = p2c.products_id
WHERE p.products_status = 1
and pd.language_id = '1'
and p2c.categories_id = '1'
GROUP BY p.products_id
ORDER BY final_price ASC
正如你可以看到我试图根据最终价格排序这对于无论是正常价格或别名特价(如果设置)。这可以通过phpmyadmin正常工作。不幸的是,这是不是通过Zen Cart的工作,我得到了PHP的错误:
PHP Fatal error: 1054:Unknown column 'final_price' in 'order clause' :: SELECT p.products_id, p.products_price_sorter, p.master_categories_id, p.manufacturers_id FROM products p LEFT JOIN specials s on p.products_id = s.products_id LEFT JOIN products_description pd on p.products_id = pd.products_id JOIN products_to_categories p2c on p.products_id = p2c.products_id WHERE p.products_status = 1\r\n and pd.language_id = '1'\r\n and p2c.categories_id = '1' GROUP BY p.products_id ORDER BY final_price ASC in /var/www/includes/classes/db/mysql/query_factory.php on line 101
所以我看着线101,它是指在数据库抽象类中的错误处理方法。有没有人有任何想法在这里出了什么问题,以及我会如何解决它?
不知道禅车。如果它不允许使用别名,那么您将留下剪切并粘贴整个列def'ORDER BY IF(s.status = 1,s.specials_new_products_price,p.products_price)',或使用数字列引用'ORDER BY 9' ... – Glenn 2013-02-08 17:46:24
以后看这个的人可能也想看看贡献http://www.zen-cart.com/downloads.php?do = file&id = 1612,它有各种排序选项。 – 2013-02-10 23:58:44
@ScottWilson我讨厌你的男人。我刚刚花了好几天的时间来创建该插件的功能(可能不是那么好),在这里,你会在艰难的日子之后来到解决方案。我搜索了这个,并找不到它。但是,如果你正在阅读这个。使用它。 – WebweaverD 2013-02-13 16:54:14