У меня есть запроссаз и как использовать значение из него
select
p.ID as order_id,
p.post_date,
i.order_item_id,
max(CASE WHEN im.meta_key = '_product_id' and i.order_item_id = im.order_item_id THEN im.meta_value END) as product_id,
max(CASE WHEN im.meta_key = '_qty' and i.order_item_id = im.order_item_id THEN im.meta_value END) as qty,
max(CASE WHEN prm.meta_key = '_sku' and im.meta_value = prm.post_id THEN prm.meta_value END) as sku,
max(CASE WHEN prm.meta_key = '_regular_price' and im.meta_value = prm.post_id THEN prm.meta_value END) as product_price
from
wp_posts as p,
wp_postmeta as pm,
wp_woocommerce_order_items as i,
wp_woocommerce_order_itemmeta as im,
wp_postmeta as prm
where
p.post_type = 'shop_order'
and p.ID = pm.post_id
and p.ID = i.order_id
and p.post_date BETWEEN '2016-01-14 00:00:00' AND '2016-01-14 23:59:59'
and p.post_status = 'wc-processing'
and p.ID = i.order_id
and i.order_item_id = im.order_item_id
group by
p.ID
, но я застрял на получение sku
и product_price
использования product_id
(оба значения пришли в NULL), когда на PhpMyAdmin я буду делать поиск по его стоимости я могу получить SKU и цену продукта meta_value
, а также другие значения для meta_key
, расположенные в таблице wp_postmeta
.
Основываясь на комментариях ниже и полезные стороны от ответа я сделал JOIN
версии запроса, который работает, но медленно:
select
p.ID as order_id,
p.post_date,
i.order_item_id,
max(CASE WHEN im.meta_key = '_product_id' THEN im.meta_value END) as product_id,
max(CASE WHEN imq.meta_key = '_qty' THEN imq.meta_value END) as qty,
max(CASE WHEN prm.meta_key = '_sku' THEN prm.meta_value END) as sku,
max(CASE WHEN prm.meta_key = '_regular_price' THEN prm.meta_value END) as product_price
from
wp_posts as p
join
wp_postmeta as pm
on
p.ID = pm.post_id
join
wp_woocommerce_order_items as i
on
p.ID = i.order_id
join
wp_woocommerce_order_itemmeta as im
on
i.order_item_id = im.order_item_id
join
wp_woocommerce_order_itemmeta as imq
on
i.order_item_id = imq.order_item_id
join
wp_postmeta as prm
on
im.meta_value = prm.post_id
where
p.post_type = 'shop_order'
and p.post_date BETWEEN '2016-01-14 00:00:00' AND '2016-01-14 23:59:59'
and p.post_status = 'wc-processing'
group by
p.ID
Мой вопрос почему мне нужно создать JOIN
для каждого CASE
заявление - другой способ для примера qty
возвращает значение как NULL.
Научитесь использовать явный синтаксис 'JOIN'. Простое правило: * Никогда * не используйте запятые в предложении 'FROM'. –
@GordonLinoff Я тоже попробовал JOIN, но тогда мне нужно ПРИСОЕДИНИТЬ несколько раз к тем же таблицам, и GoDaddy отключает соединения для такого типа запросов. – JackTheKnife
@GordonLinoff Re запятой в разделе 'FROM' - что мне тогда следует использовать? – JackTheKnife