SELECT
SQL_CALC_FOUND_ROWS products.product_id,
IF(
shared_descr.product_id IS NOT NULL,
shared_descr.product, descr1.product
) as product,
companies.company as company_name,
products.product_type,
products.parent_product_id
FROM
cscart_products as products
LEFT JOIN cscart_product_descriptions as descr1 ON descr1.product_id = products.product_id
AND descr1.lang_code = 'en'
LEFT JOIN cscart_product_prices as prices ON prices.product_id = products.product_id
AND prices.lower_limit = 1
LEFT JOIN cscart_companies AS companies ON companies.company_id = products.company_id
INNER JOIN cscart_products_categories as products_categories ON products_categories.product_id = products.product_id
INNER JOIN cscart_categories ON cscart_categories.category_id = products_categories.category_id
AND (
cscart_categories.usergroup_ids = ''
OR FIND_IN_SET(
0, cscart_categories.usergroup_ids
)
OR FIND_IN_SET(
1, cscart_categories.usergroup_ids
)
)
AND cscart_categories.status IN ('A', 'H')
AND cscart_categories.storefront_id IN (0, 1)
LEFT JOIN cscart_ult_product_descriptions shared_descr ON shared_descr.product_id = products.product_id
AND shared_descr.company_id = 1
AND shared_descr.lang_code = 'en'
LEFT JOIN cscart_product_restricted_countries AS prc ON prc.product_id = products.product_id
AND prc.country_code = 'US'
LEFT JOIN cscart_discussion ON cscart_discussion.object_id = products.product_id
AND cscart_discussion.object_type = 'P'
LEFT JOIN (
SELECT
cscart_discussion_rating.thread_id,
AVG(
cscart_discussion_rating.rating_value
) AS overall_rating
FROM
cscart_discussion_rating
GROUP BY
thread_id
) AS ratings ON ratings.thread_id = cscart_discussion.thread_id
WHERE
1
AND companies.status IN ('A')
AND (
products.usergroup_ids = ''
OR FIND_IN_SET(0, products.usergroup_ids)
OR FIND_IN_SET(1, products.usergroup_ids)
)
AND products.status IN ('A')
AND prices.usergroup_id IN (0, 0, 1)
AND (
(
1
AND products.product_id IN (
120571, 120572, 120573, 120574, 120575,
120576, 120577, 120578, 120579, 120580,
120581, 120582, 120583, 120584, 120585,
120586, 120587, 120588, 120589, 120590,
120591, 120592
)
)
AND companies.status IN ('A')
AND prices.usergroup_id IN (0, 0, 1)
)
AND (
products.available_worldwide = 'Y'
OR prc.country_code IS NULL
)
GROUP BY
products.product_id
ORDER BY
products.timestamp desc,
products.product_id desc,
products.product_id ASC