【问题标题】:MySQL - summing up products from several ordersMySQL - 总结几个订单的产品
【发布时间】:2020-08-27 19:17:31
【问题描述】:

我想总结从几个订单中购买的商品数量。我有这个查询,但是它在单独的行上显示每个订单。我想把它全部加起来。这是 woocommerce 数据库。

SELECT
  ( SELECT GROUP_CONCAT(CONCAT(m.meta_value, ' x ', i.order_item_name) separator '</br>' )
    FROM wp_woocommerce_order_items i
    JOIN wp_woocommerce_order_itemmeta m ON i.order_item_id = m.order_item_id AND meta_key = '_qty'
    WHERE i.order_id = p.ID AND i.order_item_type = 'line_item') AS 'Items'
FROM  wp_posts AS p
JOIN  wp_postmeta AS pm ON p.ID = pm.post_id
JOIN  wp_woocommerce_order_items AS oi ON p.ID = oi.order_id
WHERE post_type = 'shop_order'

示例输出:

2 x item1</br>2 x item2</br>1 x item3
4 x item1</br>5 x item2</br>3 x item3

应该是这样的:

6 x item1</br>7 x item2</br>4 x item3

【问题讨论】:

标签: mysql sql wordpress woocommerce


【解决方案1】:

您需要所有这些项目的聚合字符串,因此聚合必须是主要查询。使用INEXISTS 查找所需的订单ID。

SELECT GROUP_CONCAT(CONCAT(m.meta_value, ' x ', i.order_item_name) separator '</br>' )
FROM wp_woocommerce_order_items i
JOIN wp_woocommerce_order_itemmeta m ON i.order_item_id = m.order_item_id AND meta_key = '_qty'
WHERE i.order_item_type = 'line_item'
AND i.order_id IN
(
  SELECT p.ID
  FROM wp_posts AS p
  JOIN wp_postmeta AS pm ON p.ID = pm.post_id
  WHERE post_type = 'shop_order'
);

也许您可以在子查询中删除wp_postmeta 上的连接。这取决于post_type 列驻留在哪个表中。

(我希望我做的一切都是正确的。我只是接受了您的查询并重新编写了它。我不知道数据模型,也不知道帖子 ID 是否真的可以等于订单 ID,但这是您如何在查询中使用它们。)

【讨论】:

  • 通过这个查询,我得到了一个组合字符串,其中包含一行中的所有订单,而不是计数产品
猜你喜欢
  • 2017-06-07
  • 2022-11-27
  • 2023-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多