我想知道我是否可以将来自不同表格的列组合成一个结果。
Table A:
ID ColA ColB
1 A B
Table B:
ID ColC ColD ColE
1 C1 D1 E1
1 C2 D2 E2
Table C:
ID ColF ColG
1 F G
预期结果:
ID ColA ColB ColC ColD ColE ColF ColG
1 A B C1 D1 E1 F G
1 C2 D2 E2
有没有办法将不同表中的列合并为一个?
提前谢谢。
答案 0 :(得分:0)
您可以使用Full Outer Join
加入他们。这可以使用ID列完成,也可以通过公开每行的rownum值来完成。
根据您的预期结果,您似乎确实需要ID才是唯一的。您需要更改表B以在ID列中具有唯一值。
...
Table B:
ID ColC ColD ColE
1 C1 D1 E1
2 C2 D2 E2 //ID COLUMN VALUE CHANGED FROM 1 to 2 to be unique
...
如果ID是唯一的,您可以使用ID执行完全外部联接:
select a.*,b.*,c.*
from a
full outer join b on a.ID = b.ID
full outer join c on c.ID = b.ID
否则,您可以使用rownum
执行完全外部联接:
select a.*,b.*,c.*
from (select t.*,rownum as RowNumber from a) a
full outer join (select t.*,rownum as RowNumber from b) b on a.RowNumber = b.RowNumber
full outer join (select t.*,rownum as RowNumber from c) c on c.RowNumber = b.RowNumber
答案 1 :(得分:0)
select ID AS "ID", ColA AS "ColA", ColB AS "ColB",NULL AS ColC ,NULL AS ColD ,NULL AS ColE, NULL AS ColF, NULL AS ColG FROM Table A
UNION
SELECT ID AS "ID", NULL AS "ColA", NULL AS "ColB",ColC AS "ColC" ,ColD AS "ColD" ,ColE AS "ColE", NULL AS ColF, NULL AS ColG FROM Table B
UNION
SELECT ID AS "ID", NULL AS "ColA", NULL AS "ColB",NULL AS "ColC" ,NULL AS "ColD" ,NULL AS "ColE", ColF AS "ColF", ColG AS "ColG" FROM Table C
希望这是你的预期
答案 2 :(得分:0)
我'简单'的解决方案是<div data-ng-init='stats=${stats}'>
<li data-ng-repeat="stat in stats.Types">{{stat.name}}</li>
</div>
但是,它不会给你第二行的空白(因为TableA只包含1行)。
因此,要解决这个问题,您可以使其更加复杂,并为每个表生成每个ID的数字。然后,您可以在每个子选择上进行完全外部连接,并将生成的行号用作连接中的第二个字段。这样,您就不会得到笛卡尔积,并且在绘制时会得到结果,缺少行的间隙。
我手边没有数据库来测试它,但请告诉我它是否有效。
full outer join