【问题标题】:How to use condition in sql [closed]如何在sql中使用条件[关闭]
【发布时间】:2021-07-22 06:50:05
【问题描述】:

我想用sql来保存2个店铺之间搬货的过程。 我有两张桌子: 答:

id shop good_sn
1 1 aaa
2 1 bbb
3 1 ccc
4 2 ddd

乙:

id shop_from shop_to good_sn
1 1 2 bbb

我想选择这样的表:

shop good_sn
1 aaa
1 ccc
2 ddd
2 bbb

有没有人对此案有任何疑问?

【问题讨论】:

  • 是否要从表 B 中删除记录并更新表 A 中的记录?
  • 您可以在sqlfiddle.com 上创建示例吗?可以使用联合查询和几个连接来完成。
  • 我想在2个店铺之间转账完成后使用select获取结果
  • 到目前为止你尝试过什么?你被困在哪里了?
  • 通常您可以通过更新表 1 来显示两个位置的新库存状态。或者通过在某种分类账中持有股票。股票变动交易表。 (位置、项目、数量变化等。)

标签: mysql sql


【解决方案1】:

你可以用这个

SELECT COALESCE(b.shop_to, a.shop) AS shop, 
    a.good_sn
FROM table_a a 
LEFT JOIN table_b b 
ON a.shop = b.shop_from AND a.good_sn = b.good_sn
ORDER BY 1, 2;

【讨论】:

  • 如果货物随后从 2 号店铺移回 1 号店铺或从 2 号店铺移至 3 号店铺,这将立即停止工作,对吗?整个架构需要重新思考。
  • @JeffUK 如果货物移动超过 1 次,我的查询将失败。在那种情况下,我认为`table_b 应该有一个时间戳或订单来跟踪移动订单,这将使我们更容易选择/更新......以获取货物的最后位置。
  • @PhamX.Bach 非常感谢!也许我的问题有点令人困惑,因为我的英语不好,但这就是我想要的结果。
  • @nhhthong 作为仓库管理实施者/开发者,我 99% 确定这不是您想要的结果。当然不是作为长期可持续解决方案的基础,如果它是一个学校项目,你可能会没事! stackoverflow.com/questions/8059682/… 是一本很好的入门书
  • @PhamX.Bach 如果你这样做了,然后删除了表 A,你实际上更接近于一个强大的解决方案。表 A 变得完全多余,它只是表 B 上的一个视图。
猜你喜欢
  • 1970-01-01
  • 2018-05-05
  • 2018-04-01
  • 2022-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多