我有两个分别带有PID和NAME列的简单视图。 它们是如何相互连接的。
View1:
PID NAME
Comp1,C1
Comp2,C2
View2:
PID NAME ParentPID
Pool1,P1,Comp1
Pool2,P2,Comp2
我想通过使用UNION ALL语句在下面的列中创建一个视图(我想这是最简单的方法)
PID,NAME,PID:NAME
Comp1,C1,C1
Comp2,C2,C2
Pool1,P1,C1:P1
Pool2,P2,C2:P2
如果我仅使用PID和NAME列,则union all语句将正常运行。例如:
SELECT comp.PID, comp.NAME
from View1 comp
UNION ALL
SELECT pool.PID, pool.NAME
from View2 pool;
但是当我尝试使用UNION ALL创建新列时,它失败,如下所示。
SELECT comp.PID, comp.NAME,comp.NAME as Comp_pool_NAME
from View1 comp
UNION ALL
SELECT pool.PID, pool.NAME, concat(comp.NAME||':',pool.NAME) as Comp_pool_NAME
from View2 pool;
答案 0 :(得分:0)
UNION ALL
中的两个查询彼此独立。您不能在另一个内部引用。看起来您想要的是:
all rows from View1
union all
all rows from View2 with a column from View1
因此在第二个查询中,您需要将view1和view2连接起来:
select pid, name, pid_name from view1
union all
select v2.pid, v2.name, v1.name || ':' || v2.name
from view2 v2
inner join view1 v1 on v1.pid = v2.pid