【问题标题】:SQL Query - stuck on the following scenario:SQL 查询 - 停留在以下场景:
【发布时间】:2014-10-23 11:30:09
【问题描述】:

有没有人知道如何处理这个问题:

我的情况是我有一个CustomerTable, OrderTable, ItemsTable and DeliveryTable

一个客户可以下许多订单 一个订单可以包含很多商品

但这就是问题所在,如果我有 1 件商品,数量为 20..,我会收到 15 的库存,并希望将 15/20 发送给客户。目前我可以将DeliveryID 分配给单个项目,但其中包含所有20

所以我的问题是我需要一个中间表还是我在这里缺少一个明显的方法?

【问题讨论】:

  • 在交付表中显示交付的物品数量会有所帮助。
  • 如果你滚动商品->订单和订单->客户,你不能只携带商品的订购数量吗?我不确定你在这里得到什么。您希望您的库存更新并显示,在上面的示例中,还剩 5 个吗?
  • 为什么不单独跟踪每个项目?目前,您的 Items-table 似乎同时包含 ItemTypesItems 我建议将其分开(项目和 itemTypes 之间的 1:n 关系),这样您还可以附加一个序列号,例如并使用Items-库存表。
  • @DrCopyPaste:这对汽车来说非常有意义,但对于铅笔盒来说是荒谬的。你没有根据(还)假设一个存在而不是另一个。
  • @PieterGeerkens 是的,这就是我将why 放在那里的原因;)

标签: sql sql-server


【解决方案1】:
  • 一个客户可以有多个订单
  • 一个订单可以有多个订单行(项目)
  • 一个订单行可以有多个交货行
  • 一个交货可以有多个交货线(甚至可能是不同的 订单)

然后,您可以通过获取所有交货行来查找订单行是否已完成。

Select 
    ( select name from items where id = ol.itemid ) as itemname, 
    ol.quantity as quantity_ordered,
    ( select sum(quantity) from deliverylines dl where dl.olid = ol.id ) as quantity_delivered
from orderlines ol 
where orderid = <id>;

【讨论】:

  • 我需要在交货行中包含哪些类型的列,因为这是我缺少的表格......因为目前我的订单行包含:QuantityOrdered QuantityRecieved QuantitySent
  • 没有使用查询,但关系和 DeliveryLine 很有效,谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多