【问题标题】:how to select orders which have same items sku and qty?如何选择具有相同项目 sku 和 qty 的订单?
【发布时间】:2019-01-17 04:18:39
【问题描述】:

我在联接中有订单和购买的产品表。

如何选择已购买产品表中具有相同 SKU 和数量以及相同商品数量的订单?

假设我首先在下面的订单表中选择 id 为 1 的最旧订单,它应该从购买的产品表(A B 和 C)中获取所有购买的商品,并使用该引用检索所有类似的订单。

我的订单 ID 为 1,SKU A B C 和商品数量 1 1 2 分别共 3 件商品。我需要从表中选择所有类似的订单。预期的 o/p:查询应该检索 id 为 1 和 4 的订单。

**orderTable**
id  order_date
1   2019-01-01
2   2019-01-02
3   2019-01-03
4   2019-01-04

**purchasedProductsTable**
orderId  sku     qty
1        A       1
1        B       1
1        C       2
2        A       1
3        B       1
4        A       1
4        B       1
4        C       2

【问题讨论】:

  • 我有一个问题要问你。为什么要保留一个只有一个字段 id 的表(orderTable)?
  • 为什么在 id, sku 后面加逗号?
  • 我现在已经编辑了 :)

标签: mysql


【解决方案1】:

直接从采购表中选择与订单相关的所有记录:

SELECT * FROM purchasedProductsTable WHERE orderId = 1;

通过加入orderTable来选择与订单相关的所有记录:

SELECT * FROM orderTable OT JOIN purchasedProductsTable PT ON (PT.orderId = OT.id) WHERE OT.id = 1;

如果您只需要订购 1 和 4:

SELECT * FROM orderTable OT JOIN purchasedProductsTable PT ON (PT.orderId = OT.id) WHERE OT.id IN (1,4);

先按最早的订单日期排序:

SELECT * FROM orderTable OT JOIN purchasedProductsTable PT ON (PT.orderId = OT.id) ORDER BY OT.order_date DESC;

这是SQL Fiddle for demo

【讨论】:

  • 那么你解决了吗?
  • 实际上我需要的是我应该获得系统中未处理的最旧订单。并按该顺序查看 skus 和项目数量,并使用该参考订单,我需要选择所有类似的订单。 :) 。假设首先创建订单 1,这是最旧的未处理订单。其中有 sku A B C 和 qty 1 1 2 ,其总项目数为 3(相同)。所以我应该选择所有具有 skus A B C 和项目数量分别为 1 1 2 的订单..
  • 没有订单日期如何获得最早的订单?你能发布你的预期结果吗
  • 结果是否符合您的预期?我已更新查询
  • 我需要具体说明购买的物品和数量@Sinto :) 该查询将检索所有订单。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-04
  • 1970-01-01
  • 2020-04-14
  • 1970-01-01
  • 1970-01-01
  • 2012-12-22
相关资源
最近更新 更多