Я предложил следующий запрос, чтобы получить данные о ценах на продукты.Этот запрос работает нормально, хотя мне интересно, есть ли способ упростить / оптимизировать его?
Запрос извлекает информацию о продукте и информацию о ценах для каждого продукта.Если для определенного продукта нет информации о ценах (p_p. pl_id
= 2), присоединитесь к другому запросу с информацией о ценах (p_p. pl_id
= 1).Наконец, сгруппируйте все товары по идентификатору, чтобы получить отдельные строки.
Используемые таблицы: products - некоторые сведения о продуктах, такие как название, описание и т. Д. product_pricing (p_p) -содержит информацию о ценах для каждого продукта.Может быть больше одной записи для одного продукта, потому что цена продукта варьируется в зависимости от заказанного количества
SELECT * FROM (
(
SELECT `products`.*,
GROUP_CONCAT(p_p.`qty_range` SEPARATOR '|') AS qty_range,
GROUP_CONCAT(CAST(p_p.`p_price` AS CHAR) SEPARATOR '|') AS price
FROM `products`
LEFT JOIN `prod_pricing` AS p_p ON p_p.`prod_id` = `products`.`prod_id`
WHERE `products`.`account_id` = 2
AND p_p.`pl_id` = 2
GROUP BY `products`.`prod_id`
)
UNION
(
SELECT `products`.*,
GROUP_CONCAT(p_p.`qty_range` SEPARATOR '|') AS qty_range,
GROUP_CONCAT(CAST(p_p.`p_price` AS CHAR) SEPARATOR '|') AS price
FROM `products`
LEFT JOIN `prod_pricing` AS p_p ON p_p.`prod_id` = `products`.`prod_id`
WHERE `products`.`account_id` = 2
AND p_p.`pl_id` = 1
GROUP BY `products`.`prod_id`
)) AS list
GROUP BY list.`prod_id`