Как соединить несколько строк в таблице в одну
Есть sql запрос
select
oi.order_item_name , oi.order_item_id, oim.meta_key ,oim.meta_value
from
idlf.wp_woocommerce_order_items as oi
right join
idlf.wp_woocommerce_order_itemmeta as oim
on
oim.order_item_id = oi.order_item_id
where
oi.order_id = 8133 AND meta_key IN ('_qty', '_line_total','_product_id')
Как сделать так чтобы _product_id, _qty и _line_total были в одной строке к одному и тому же товару?
Ответы (1 шт):
Автор решения: Fat-Zer
→ Ссылка
Придётся делать 3 JOIN'а (или подзапроса, сути не меняет), ничего гламурней для EAV в sql не придумать:
SELECT oi.order_item_name , oi.order_item_id,
oim_qty.meta_value, oim_line_total.meta_value, oim_product_id.meta_value
FROM idlf.wp_woocommerce_order_items AS oi
LEFT JOIN idlf.wp_woocommerce_order_itemmeta AS oim_qty
ON oi.order_item_id = oim_qty.order_item_id
AND oim_qty.meta_key = `_qty`
LEFT JOIN idlf.wp_woocommerce_order_itemmeta AS oim_total
ON oi.order_item_id = oim_total.order_item_id
AND oim_total.meta_key = `_line_total`
LEFT JOIN idlf.wp_woocommerce_order_itemmeta AS oim_product_id
ON oi.order_item_id = oim_product_id.order_item_id
AND oim_product_id.meta_key = `_product_id`
WHERE oi.order_id = 8133
Также, в вопросе, наверно, имелся в виду LEFT JOIN. RIGHT JOIN мало подходит здесь по смыслу...
