将同一列中的两行相乘

时间:2018-10-01 17:25:44

标签: mysql wordpress woocommerce

我想在另一列的帮助下在同一列中将2个结果相乘。我会尝试解释:

首先,让我介绍一下我使用的表:

1 /搜索指称对象(term_taxonomy id)的乘积(对象ID)

TAB => wp_term_relationships

+-----------+------------------+
| object_id | term_taxonomy_id |
+-----------+------------------+
| 723       | 685              |
| 724       | 685              |
+--------------+---------------+

2 /搜索_product_id(meta_key)的所有产品ID(meta_value)以获得每个商品的order_item_id

TAB => wp_woocommerce_order_itemmeta 注意:meta_id 400不属于术语“指称”

+---------+---------------+---------------+------------+
| meta_id | order_item_id |  meta_key     | meta_value |
+-------- +---------------+---------------+------------+
| 203     | 24            | _product_id   | 723        |
| 204     | 24            | _product_cost | 79         |
| 205     | 24            | _qty          | 5          |
| 355     | 56            | _product_id   | 724        |
| 356     | 56            | _product_cost | 99         |
| 357     | 56            | _qty          | 3          |
| 400     | 26            | _product_id   | 1500       |
+---------+---------------+---------------+------------+

3 /搜索所有order_ID(元值)以获取order_id

TAB => wp_woocommerce_order_items 注意:order_item_id 26不属于术语“指称” NB2:order_id 10(1&3)中的两个产品

+---------------+-----------------+------------------+----------+
| order_item_id | order_item_name |  order_item_type | order_id |
+---------------+-----------------+------------------+----------+
| 24            | product 1       | line_item        | 10       |
| 25            | delivery        | shipping         | 10       |
| 56            | product 3       | line_item        | 10       |
| 26            | product 50      | line_item        | 11       |
+---------------+-----------------+------------------+----------+

4 /搜索所有order_id(ID)并在WHERE中传递参数以过滤列表

TAB => wp_posts

+-------------------+---------------------+
| ID | post_status  |  post_date          |
+----+--------------+---------------------+
| 10 | wc-completed | 2018-09-25 23:04:52 |
| 11 | wc-suspend   | 2017-09-25 23:04:52 |
| 15 | wc-completed | 2017-09-66 23:04:52 |
+-------------------+---------------------+

现在,按照我到目前为止所做的事情:

SELECT
COUNT( posts.ID ) AS count_orders,
SUM(order_meta_items_cost.meta_value * order_meta_items_qty.meta_value) AS total_sales

FROM wp_posts AS posts

LEFT JOIN wp_term_relationships AS rel ON rel.term_taxonomy_id = '685'

LEFT JOIN wp_woocommerce_order_itemmeta AS order_meta_items 
ON order_meta_items.meta_value = rel.object_id 
AND order_meta_items.meta_key LIKE '_product_id'

LEFT JOIN wp_woocommerce_order_items AS order_items 
ON order_items.order_item_id = order_meta_items.order_item_id 
AND order_items.order_item_type LIKE 'line_item'

INNER JOIN wp_woocommerce_order_items AS order_items_cost 
ON order_items_cost.order_id = posts.ID 
AND order_items.order_item_type LIKE 'line_item'

INNER JOIN wp_woocommerce_order_itemmeta AS order_meta_items_cost 
ON order_meta_items_cost.order_item_id = order_items_cost.order_item_id 
AND order_meta_items_cost.meta_key = '_wc_cog_item_cost'

INNER JOIN wp_woocommerce_order_itemmeta AS order_meta_items_qty 
ON order_meta_items_qty.order_item_id = order_items_cost.order_item_id 
AND order_meta_items_qty.meta_key = '_qty'

WHERE  posts.ID = order_items.order_id
AND posts.post_status IN ('wc-completed')
AND UNIX_TIMESTAMP(CONVERT_TZ(posts.post_date, '+00:00', @@global.time_zone)) >= '1537747200'
AND UNIX_TIMESTAMP(CONVERT_TZ(posts.post_date, '+00:00', @@global.time_zone)) <= '1538351999'

我想要的结果

  • 具有正确数量的帖子。ID(count_orders)
  • 具有正确的产品总价(按数量)。

在此示例中,它将是: 仅完成订单10,因此我们将order_item_id保留为24和56。 现在,我们要按他的数量(一个订单中的产品数量)来确定产品价格

order_item_id 24 :
_product_cost = 79
_qty = 5
so 79*5 = 395

order_item_id 56 :
_product_cost = 99
qty = 3
so 99*3 = 297

** Right result in total_sales -> 395+297 = 692**

我尝试了很多组合,但是我不知道该怎么做。

你有什么主意吗?非常感谢你!

1 个答案:

答案 0 :(得分:0)

此查询为您提供所需的总销售额。

n