Создание соединения и COUNT() в Zen Cart
У меня много проблем, когда я пытаюсь создать соединение и посчитать (а затем установить порядок) в корзине Zen.
Вот код:
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 count(opc.products_id) в конце. Не уверен, где я иду не так, большое спасибо!
ребро
1 ответ
Трудно не потеряться в вашем коде, но что вам нужно сделать:
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 ";