我做的最多编程是shell脚本或者一些python或perl,所以我在Googling之后有一个基本的了解。关于我正在做什么的一点背景。我们有两个库存系统:我们的和他们的。我需要从他们的信息中提取信息以与我们的信息进行比较。
问题:我们需要UPC进行库存,而他们在月度库存报告中提供SKU。
解决方案:加入3个表。我正在使用phpmyadmin在最近安装的Debain Wheezy上管理一个mysql后端。
第一个查询获取他们在库存中的每个SKU,将其与其列表中的UPC进行比较,并且由于并非每个“UPC”实际上都是UPC,因此将其与我们列表中的UPC进行比较。它看起来像这样:
SELECT TheirListings.upc, SUM(TheirInventory.quantity)
FROM TheirInventory
JOIN TheirListings
ON TheirListings.sku = TheirInventory.sku
JOIN OurListings
ON TheirListings.upc = OurListings.Upc
GROUP BY TheirListings.upc
ORDER BY TheirListings.upc
它似乎运作良好。我们的系统很满意,它让我高兴,因为这减少了96%的手动输入。现在我需要得到一些没有捕获到的东西:需要手动输入的4%。我们的表格简洁,简洁如下:
TheirListings TheirInventory OurListings
upc sku upc
sku quantity
我需要选择所有SKU和相关数量:
SELECT TheirInventory.sku, SUM(TheirInventory.quantity)
FROM TheirInventory
LEFT OUTER JOIN TheirListings
ON TheirListings.sku = TheirInventory.sku
LEFT OUTER JOIN OurListings
ON TheirListings.upc = OurListings.upc
WHERE OurListings.upc IS NULL
OR TheirListings.upc IS NULL
GROUP BY TheirInventory.sku
ORDER BY TheirInventory.sku
要仔细检查它是否正在捕捉剩余部分,我为这两个查询执行了SELECT COUNT(TheyInventory.sku),而另一个则返回了sku的总数。添加我的两个查询比我预期的要多1个。我不确定我哪里出错了。
答案 0 :(得分:0)
我猜的第一件事是他们没有在相同的数据集上工作。如果你几天前运行第一个,可能有些数据已经改变,导致它出现在第二个查询中?
如果没有,我会做的是
SELECT SKU
FROM TheirInventory
WHERE SKU IN (<1st query>)
AND SKU IN (<2nd query>)
这将告诉你两者中出现的是什么,你可以从那里进行诊断。