Создание соединения и 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 ";
Другие вопросы по тегам