join - 将多个表混合到一个表中

  显示原文与译文双语对照的内容

我想我想要的东西与英镑有关。 并集 和/或者 join 但是我现在不知道怎么做,所以这是我在寻求帮助。

我有一些不同数据但结构完全相同的表格,我想把它们混合成一个。 假设我有 2个表像这样。

Store_1

Product Quantity
-------- ----------
AAA 25
BBB 15

Store_2

Product Quantity
-------- ----------
AAA 10
CCC 40

我想要的是这两个表的混合:

Product Store_1_Quantity Store_2_Quantity
-------- ---------------- ----------------
AAA 25 10
BBB 15 Null/0
CCC Null/0 40

这不仅仅仅限于两个表。 实际上对于某些实例,我需要将 10个表混合成一个?

时间: 作者:

你将需要英镑联合和英镑连接。 尝试这个:


SELECT p.*, store_1.quantity AS Store_1_Quantity, store_2.quantity AS Store_2_Quantity
FROM (SELECT Product FROM Store_1 UNION SELECT Product FROM Store_2) AS p
LEFT JOIN Store_1
ON p.product = Store_1.product
LEFT JOIN Store_2
ON p.product = Store_2.product

工作演示:http://sqlfiddle.com/#!2/8f4bc1/3

作者:

你需要使用完全外部 Join 。 问题是MySQL不支持它们,但是它们可以通过左右连接使用模拟相当容易的方法。

对于你的情况,以下查询应该有效:


SELECT A.PRODUCT, A.QUANTITY, B.QUANTITY FROM STORE_1 A
LEFT JOIN STORE_2 B ON (A.PRODUCT = B.PRODUCT)
UNION ALL
SELECT B.PRODUCT, A.QUANTITY, B.QUANTITY FROM STORE_1 A
RIGHT JOIN STORE_2 B ON (A.PRODUCT = B.PRODUCT)
WHERE A.PRODUCT IS NULL;

作者:
...