我需要统计几个定期更新库存的仓库的数量。这些文件会自动加载到我的 MySQL 数据库中的表中,但有时一个仓库可能比其他仓库拥有更多或更少的文件。我需要将它们全部添加以确定整个网络的可用总量。
我的想法是:
SELECT
IFNULL(branch_01.qty,0) +
IFNULL(branch_02.qty,0) +
IFNULL(branch_03.qty,0) +
等等。通过所有加入的仓库:
FROM branch_01
JOIN branch_02
USING (oespaced)
JOIN branch_03
USING (oespaced)
等等。遍历所有仓库
我无法使用 LEFT JOIN 或 RIGHT JOIN,因为有时一个仓库可能缺少条目,有时另一个仓库可能缺少条目。如果一个分支的文件中缺少 sku,我更愿意将其他分支添加到一起,并且只得到 NULL,该 NULL 会被 SELECT 中的函数转换为 0。当我测试不同的连接解决方案时,我似乎也得到了笛卡尔行数,这让我更加困惑。 非常感谢任何指导。
稍微澄清一下: 我们需要连接 17 个表。我们并不真正关心列的总和,而是更关心各个值。例如,表格可能表示项目 a、b、c、d 的列表,并列出数量 1、2、3、4。我们将从几个不同的仓库获得该表,并且需要找到整个网络的总计。如果四个仓库具有这些值,我们希望看到 a、b、c、d 以及 4、8、12、16 作为可用总数的值。
最佳答案
我不太明白你的问题,但希望我的回答对你有一点帮助。 您要加入很多 table 吗?假设有 2 个表,您想要对数量列求和?
首先,JOIN
执行 2 个(或更多)表的笛卡尔积。所以你会得到很多你不希望有的实例;解决这个问题的方法是使用 WHERE
。
也许这就是您正在寻找的:
SELECT sum(a.qty) + sum(b.qty)
FROM table1 a, table2 b
WHERE a.pk = b.fk -- this one resolves the unwanted instances
fk 表示外键,pk 表示主键。
关于mysql - 如何合并多个不同行的 MySQL 表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21874660/