【发布时间】:2020-06-14 16:43:49
【问题描述】:
我有两个表格,格式如下:
表 1
data_1 | data_2 | weight
1 | a | 25
1 | b | 25
1 | c | 25
1 | d | 25
2 | e | 100
表 2
data_4 | data_1 | data_2 | value
AB | 1 | a | 25
AB | 1 | b | 25
AB | 1 | c | 25
AB | 1 | d | 25
BC | 2 | e | 50
BC | 2 | f | 50
CD | 1 | a | 50
CD | 1 | b | 50
我希望创建以下输出:
输出
data_4 | data_1 | data_2 | value | weight
AB | 1 | a | 25 | 25
AB | 1 | b | 25 | 25
AB | 1 | c | 25 | 25
AB | 1 | d | 25 | 25
BC | 2 | e | 50 | 100
BC | 2 | f | 50 | 0
CD | 1 | a | 50 | 25
CD | 1 | b | 50 | 25
CD | 1 | c | 0 | 25
CD | 1 | d | 0 | 25
基本上,我希望为每个 data_4 记录加入 data_1 和 data_2 上的表格,同时显示价值和权重及其对应的值。
我尝试了几件事,但似乎没有得到正确的输出。任何帮助将不胜感激。
【问题讨论】:
-
给出你到目前为止所尝试的内容
-
(1) 使用您正在使用的数据库进行标记。 (2) 为什么 CD 会出现新行,而 BC 不会出现?
-
因为在表 2 中您可以看到 BC 属于 [data_1] 类型 2,并且其中包含 [data_2] 类型 e 和类型 f。 [data_1] 类型 2 的目标是仅保存 [data_2] e。因此,输出表显示 BC 仍为 [data_1] 类型 2,并显示它持有 [data_2] e & f,其值分别为 50 和 50,但权重(目标权重)分别为 100 和 0。
-
CD 但是是 [data_1] 类型 1 并且当前持有 [data_2] 类型 a 和 b。 [data_1] 类型 1 的目标是持有 [data_2] a,b,c,d 每个权重为 25。因此它应该显示 [data_2] c&d 以及它当前在 [data_2] a &b 中的持有量。
标签: sql join outer-join