我有一个已还原的行表restoredData
,其中包含有关beer
和cases
的部分信息。它包含beer
条码的截断版本,以及每行case
的完整条码。
beers
,beers_archive
,cases
,cases_archive
的全部都丢失了一些数据,这是由于错误的存储过程导致负责从beers
传输项目到beers_archive
,情况相同。我负责从restoredData
恢复丢失的项目,beer_archive
是根据每天创建的文本备份创建的。
我试图用它来将一些数据恢复到我已经存在的cases
表中。
这是问题所在,已还原表中的cases_archive
信息已经还原到restoredData
,因此我能够查看cases
中的完整条形码通过将cases_archive
与cases
合并,将case_archive
上的表合并到restoredData
上,并查找联接{{1 }}。这告诉我IS NULL
中存在哪些不在数据库中的条形码,因此我可以插入它们。
但是,鉴于我的啤酒缩短条形码不是唯一的,所以我不能像以前那样简单地做。 restoredData
或restoredData
中已经存在我的beer
中的啤酒条形码,但是它们可能有两个不同的父项beer_archive
,这表明它们是实际上是两个不同的瓶子。
另一则信息-cases
确实有一个大小栏,指示每箱有多少个瓶子-我在想用某种方式查看箱子的大小,比如说6,但是只有4存在于cases
和bottles
中,可以根据案例条形码在恢复的数据中查找其中的2。列出连接的瓶子少于其数量的瓶子的清单,然后以某种方式从那里去。
我的另一个想法是拿走我的bottles_archive
,该瓶子有史以来制作的每一个瓶子和箱子,然后从中减去所有具有restoredData
和beer.barcode
匹配的记录-仅留给我装有行列条形码但在cases.fullBarcode
或beer
中不存在的瓶子的行。但是,我不知道该如何用代码编写。
与表相关的列看起来像这样
beer_archive
我个人认为,以最简单的方式,仅是基于where查询,从已存在的还原数据中减去瓶子,但我也认为,一个箱子可能有两个缩短的啤酒条形码,但它们仍然相同那就错过了。
关于如何解决此问题的任何想法?
更新:
我已经能够获得所有缺少瓶子的案例的所有ID的列表。我计算了每箱加入的瓶子的数量,将其与箱子的大小进行比较,并按减法排序。在大多数情况下,缺少1瓶纪录。但是,从此ID列表中,仍然不清楚如何进行。
更新2:我已经放弃尝试仅在SQL中解决此问题。我正在使用查询来生成缺少瓶和瓶的案例,然后从那里转到python进行处理。