SQL 为另一个 table 中的每个不同值添加 table 子集
SQL add table subset for each distinct value in another table
我想将 table (t2)
的一个子集添加到另一个 table (t1)
中,每个 customer_id
一次。
t1
表示有序的materials。 t2
代表静态table代表高销量materials.
我们的目标是为每个客户创建一个 table 和 material 列表。 (t2)
不包含任何 customer_id
引用,但包含 region_id
键。
基本上我需要的是“将此子集 material 列表添加到您现有的 material 列表中 each customer
基于他所在的地区”
我不知道如何 join/union
那些没有 customer_id
的 table,因为我会得到重复的条目。
t1
看起来像这样:
Customer_id
region_id
material_id
155
南美[=163=]
AA-123-526
155
南美[=163=]
AA-425-123
157
南美[=163=]
AA-123-623
157
南美[=163=]
AA-612-244
158
SOA
AA-123-456
158
SOA
AA-655-876
t2
看起来像这样:
region_id
material_id
南美[=163=]
BB-724-623
南美[=163=]
BB-421-125
DACH
BB-123-622
DACH
BB-421-231
SOA
BB-123-551
SOA
BB-421-125
期望的输出:
Customer_id
region_id
material_id
155
南美[=163=]
AA-123-526
155
南美[=163=]
AA-425-123
155
南美[=163=]
BB-724-623
155
南美[=163=]
BB-421-125
157
南美[=163=]
AA-123-623
157
南美[=163=]
AA-612-244
157
南美[=163=]
BB-724-623
157
南美[=163=]
BB-421-125
158
SOA
AA-123-456
158
SOA
AA-655-876
158
SOA
BB-123-551
158
SOA
BB-421-125
示例数据
SELECT * FROM t1
SELECT * FROM t2
解决方案
SELECT t1.Customer_id, t1.region_id, t1.material_id FROM t1
UNION ALL
SELECT DISTINCT t1.Customer_id, t2.region_id, t2.material_id
FROM t2 INNER JOIN t1 ON t2.region_id = t1.region_id
ORDER BY t1.Customer_id
我想将 table (t2)
的一个子集添加到另一个 table (t1)
中,每个 customer_id
一次。
t1
表示有序的materials。 t2
代表静态table代表高销量materials.
我们的目标是为每个客户创建一个 table 和 material 列表。 (t2)
不包含任何 customer_id
引用,但包含 region_id
键。
基本上我需要的是“将此子集 material 列表添加到您现有的 material 列表中 each customer
基于他所在的地区”
我不知道如何 join/union
那些没有 customer_id
的 table,因为我会得到重复的条目。
t1
看起来像这样:
Customer_id | region_id | material_id |
---|---|---|
155 | 南美[=163=] | AA-123-526 |
155 | 南美[=163=] | AA-425-123 |
157 | 南美[=163=] | AA-123-623 |
157 | 南美[=163=] | AA-612-244 |
158 | SOA | AA-123-456 |
158 | SOA | AA-655-876 |
t2
看起来像这样:
region_id | material_id |
---|---|
南美[=163=] | BB-724-623 |
南美[=163=] | BB-421-125 |
DACH | BB-123-622 |
DACH | BB-421-231 |
SOA | BB-123-551 |
SOA | BB-421-125 |
期望的输出:
Customer_id | region_id | material_id |
---|---|---|
155 | 南美[=163=] | AA-123-526 |
155 | 南美[=163=] | AA-425-123 |
155 | 南美[=163=] | BB-724-623 |
155 | 南美[=163=] | BB-421-125 |
157 | 南美[=163=] | AA-123-623 |
157 | 南美[=163=] | AA-612-244 |
157 | 南美[=163=] | BB-724-623 |
157 | 南美[=163=] | BB-421-125 |
158 | SOA | AA-123-456 |
158 | SOA | AA-655-876 |
158 | SOA | BB-123-551 |
158 | SOA | BB-421-125 |
示例数据
SELECT * FROM t1
SELECT * FROM t2
解决方案
SELECT t1.Customer_id, t1.region_id, t1.material_id FROM t1
UNION ALL
SELECT DISTINCT t1.Customer_id, t2.region_id, t2.material_id
FROM t2 INNER JOIN t1 ON t2.region_id = t1.region_id
ORDER BY t1.Customer_id