当前位置: 首页 > 知识库问答 >
问题:

MySQL调用:使用产品子集完成订单

经正祥
2023-03-14

我们的问题如下。我们有一个shop\u orders数据库,其中包含客户下达的订单:

Id | User_id
-------------
1  |       1

另一方面,我们有表shop\u order\u products,其中包含包含每个订单的产品,其中字段order\u id与两个表相关:

ID | Order_id | Qty | Product_id | Product_name | Product_price |
-----------------------------------------------------------------
1  |        1 |   2 |         23 |   Samsung S5 |          40.5 |
2  |        1 |   1 |         12 |    IPhone 6S |            80 |

为了澄清,在本例中,order 1有2台三星和1台iPhone。

我们能够知道,通过表shop_order_products,哪些是我们的网上商店最畅销的产品,通过致电:

SELECT *, COUNT (*) sales FROM shop_order_products GROUP BY order_id ORDER BY sales DESC

给定一部分产品,我们需要知道我们可以得到多少完整的订单。也就是说,如果我们销售最多的产品是iPhone 6S和三星Galaxy S5,那么这两款产品的完整订单会是多少。如果订单同时包含两种产品,但也包含其他产品,则在我们的计算中不会将其考虑在内。

共有1个答案

萧献
2023-03-14

如果我理解正确的话,您想要的订单只有一组给定的产品,而没有其他产品。此外,您似乎没有考虑数量。

因此:

select sop.order_id
from shop_order_products sop
group by sop.order_id
having sum(sop.product_id in (<your list here>)) = count(*);

sum()统计具有可接受乘积的行数(对于每个订单)。=计数(*)指定这是所有行。

 类似资料:
  • 有什么方法我可以添加内容从一个自定义产品字段到‘订单完成'WooCommerce电子邮件? 我已经将此代码添加到functions.php中,以便将自定义字段保存到产品元信息中。 上面的代码工作得很好,它显示了所有“订单完成”电子邮件的自定义文本。 但是,我想用自定义产品字段数据替换文本的URL部分。每个产品的数据都不同。 谢了。

  • 电子邮件屏幕抓取显示文本应该去哪里 我尝试将此添加到functions.php中,但它是2015年的,用于“处理”未“完成”的电子邮件: 我已经尝试过了,但这是几年前的事情,并没有完成我需要的:将产品描述添加到WooCommerce电子邮件通知中

  • 我有4张桌子: 库存(库存ID、可用数量) 一个客户可以有多个订单,而一个订单由多个orderDetails项目组成。我正在尝试将库存项目存储在由库存项目和数量整数组成的映射中。 当我尝试以这种方式持久化它时,第一个库存项目将以1的orderID添加到Order详细信息表中。但是下一个是使用2的orderID插入的(不存在)。 有什么帮助吗?

  • 我正在尝试取消/删除在订单发货后将订单状态保存为“已完成”时发送的自动客户电子邮件。 不想发送自动电子邮件的原因是,我在电子邮件模板文件(override)/woocommerce/email/customer-completed-order.php中添加了一个代码,它将在发送给客户的电子邮件中显示在admin中创建的新订单注释,如果我们添加订单注释并保存它,然后将订单状态更改为completed

  • 我有一个虚拟产品,我希望它改变状态后付款完成。下面的代码将所有购买更改为“已完成”,但我只想更改我的一个产品,而不是全部。我的产品是一个可变产品, 我找了很多,但没有找到答案。请帮帮我.谢谢

  • 我想按价格、日期和发布年份等项目对产品进行排序。在发布年份的情况下,我做了一个分类法=发布年份 但它是不工作.我怎么能改变代码可能排序按发布年份顺序?