不确定我在sql join上出错了

时间:2015-06-04 21:14:39

标签: mysql sql join

我做的最多编程是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个。我不确定我哪里出错了。

1 个答案:

答案 0 :(得分:0)

我猜的第一件事是他们没有在相同的数据集上工作。如果你几天前运行第一个,可能有些数据已经改变,导致它出现在第二个查询中?

如果没有,我会做的是

SELECT SKU
FROM TheirInventory
WHERE SKU IN (<1st query>)
  AND SKU IN (<2nd query>)

这将告诉你两者中出现的是什么,你可以从那里进行诊断。