SELECT
SQL_CALC_FOUND_ROWS (
CASE WHEN products.parent_product_id <> 0 THEN products.parent_product_id ELSE products.product_id END
) AS product_id,
IF(
shared_descr.product_id IS NOT NULL,
shared_descr.product, descr1.product
) as product,
companies.company as company_name,
IF(
shared_prices.product_id IS NOT NULL,
MIN(
IF (
shared_prices.percentage_discount = 0,
shared_prices.price,
shared_prices.price - (
shared_prices.price * shared_prices.percentage_discount
) / 100
)
),
MIN(
IF (
prices.percentage_discount = 0,
prices.price,
prices.price - (
prices.price * prices.percentage_discount
) / 100
)
)
) as price,
GROUP_CONCAT(
products.product_id
ORDER BY
products.parent_product_id ASC,
products.product_id ASC
) AS product_ids,
GROUP_CONCAT(
products.product_type
ORDER BY
products.parent_product_id ASC,
products.product_id ASC
) AS product_types,
GROUP_CONCAT(
products.parent_product_id
ORDER BY
products.parent_product_id ASC,
products.product_id ASC
) AS parent_product_ids,
products.product_type,
products.parent_product_id,
products.free_shipping,
products.product_label_id,
products.product_label_id_by_admin,
categories.id_path
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_product_prices as prices_2 ON prices.product_id = prices_2.product_id
AND prices_2.lower_limit = 1
AND prices_2.price < prices.price
AND prices_2.usergroup_id IN (0, 0, 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_ult_product_prices as shared_prices ON shared_prices.product_id = products.product_id
AND shared_prices.lower_limit = 1
AND shared_prices.usergroup_id IN (0, 0, 1)
AND shared_prices.company_id = 1
LEFT JOIN cscart_ult_product_prices as shared_prices_2 ON shared_prices.product_id = shared_prices_2.product_id
AND shared_prices_2.company_id = 1
AND shared_prices_2.lower_limit = 1
AND shared_prices_2.price < shared_prices.price
AND shared_prices_2.usergroup_id IN (0, 0, 1)
LEFT JOIN cscart_categories as categories ON categories.category_id = products_categories.category_id
LEFT JOIN cscart_product_label as product_label ON product_label.id = products.product_label_id_by_admin
WHERE
1
AND products.product_id NOT IN (135)
AND companies.status IN ('A')
AND (
prices.price >= 0.00
OR shared_prices.price >= 0.00
)
AND (
prices.price <= 0.00
OR shared_prices.price <= 0.00
)
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 prices_2.price IS NULL
AND shared_prices_2.price IS NULL
GROUP BY
product_id
ORDER BY
product asc,
products.product_id ASC
LIMIT
0, 3