2014-11-06 71 views
0

在Zen购物车中尝试创建连接并计数(然后设置顺序)时遇到了很多麻烦。在Zen Cart中创建加入和COUNT()

下面的代码:

echo $listing_sql = "select " . $select_column_list . " p.products_id, count(opc.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 " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . 
    TABLE_PRODUCTS . " p left join " . TABLE_MANUFACTURERS . " m on p.manufacturers_id = m.manufacturers_id, " . 
    TABLE_PRODUCTS_TO_CATEGORIES . " p2c left join " . TABLE_SPECIALS . " s on p2c.products_id = s.products_id 
    join " . TABLE_ORDERS_PRODUCTS . " opc on opc.products_id = p.products_id 
    where p.products_status = 1 
    and p.products_id = p2c.products_id 
    and pd.products_id = p2c.products_id 
    and pd.language_id = '" . (int)$_SESSION['languages_id'] . "' 
    and p2c.categories_id = '" . (int)$current_category_id . "'" . 
    $alpha_sort . " ORDER BY count(opc.products_id)"; 

我想算opc.products_id,然后将其设置为ORDER BY在结束计数(opc.products_id)。不知道我哪里错了,非常感谢!

科斯塔

回答

0

很难不迷失在你的代码,但你需要做的事情:

1)让像你想的是选择产品,只是没有计数(opc.products_id查询)和现在排序。测试它。所有产品应该只有一个排的每个(不口是心非),然后...

2)重点编辑代码在这三个突出部分:

echo $listing_sql = "select " . $select_column_list . " p.products_id, count(opc.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 

,count(opc.products_id) as opc_count 

from " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . 
TABLE_PRODUCTS . " p left join " . TABLE_MANUFACTURERS . " m on p.manufacturers_id = m.manufacturers_id, " . 
TABLE_PRODUCTS_TO_CATEGORIES . " p2c left join " . TABLE_SPECIALS . " s on p2c.products_id = s.products_id 

join " . TABLE_ORDERS_PRODUCTS . " opc on opc.products_id = p.products_id 

where p.products_status = 1 
    and p.products_id = p2c.products_id 
    and pd.products_id = p2c.products_id 
    and pd.language_id = '" . (int)$_SESSION['languages_id'] . "' 
    and p2c.categories_id = '" . (int)$current_category_id . "'" . 
    $alpha_sort . " 

GROUP BY p.products_id ORDER BY opc_count "; 
+0

感谢大卫,仍然无法正常工作,这里是正常工作的香草代码: http://jsfiddle.net/mpjshvs4/ 将其转储到jsfiddle中,以便它保持清晰。 – Cozmoz 2014-11-06 16:15:53

+0

您至少可以告诉我们SQL错误消息。 AND计算查询,当这些变量和常量背后有未知数时,它是毫无意义的。我相信至少有一个错误是,'$ alpha_sort'包含'ORDER BY'子句。你不能拥有其中的两个,你需要合并它们。 – David162795 2014-11-06 16:21:54

+0

对不起,大卫,这里是一个截图: http://www.mediafire.com/view/dmgp5j6g7lne63e/Screenshot.png – Cozmoz 2014-11-06 16:43:33