2014-03-28 39 views
0

我有以下几点看法不能创建从其他视图的MySQL视图

M_VWPROC_sub1,M_VWPROC_sub2,M_VWPROC_sub3,M_VWPROC_sub4,M_VWPROC_sub5, M_VWPROC_sub6,M_VWPROC_sub7,M_VWPROC_sub8,M_VWPROC_sub9

我试图创建一个使用视图以下sql.but我收到以下错误

# 1064 - 你在你的SQL语法错误;检查对应于您MariaDB的服务器版本正确的语法使用 附近 'M_VWPROC_sub2 UNION ALL M_VWPROC_sub3联盟所有M_VWPROC_sub4 UNION ALL M_VWPROC' 第2行

查询手册:

CREATE OR REPLACE VIEW M_VWPROC (UNIT, PS_DATE, LOCALIN, STOCKIN, STOCKOUT) AS 
select inner_sub_table.UNIT, 
     inner_sub_table.PS_DATE, 
     sum(inner_sub_table.LOCALIN)LOCALIN, 
     sum(inner_sub_table.pur) STOCKIN, 
     sum(inner_sub_table.sale) STOCKOUT 
    from M_VWPROC_sub1 
union all M_VWPROC_sub2 
union all M_VWPROC_sub3 
union all M_VWPROC_sub4 
union all M_VWPROC_sub5 
union all M_VWPROC_sub6 
union all M_VWPROC_sub7 
union all M_VWPROC_sub8 
union all M_VWPROC_sub9) 
     inner_sub_table 
group by inner_sub_table.UNIT, inner_sub_table.PS_DATE; 

任何帮帮我。提前致谢。

回答

0

union all的正确语法需要子查询。 。 。这是一个select子句。但是,你不能做你想做的。你需要另一层子查询。喜欢的东西:

create view v_YetAnotherView as 
select * from M_VWPROC_sub1 
union all select * from M_VWPROC_sub2 
union all select * from M_VWPROC_sub3 
union all select * from M_VWPROC_sub4 
union all select * from M_VWPROC_sub5 
union all select * from M_VWPROC_sub6 
union all select * from M_VWPROC_sub7 
union all select * from M_VWPROC_sub8 
union all select * from M_VWPROC_sub9; 

然后:

CREATE OR REPLACE VIEW M_VWPROC (UNIT, PS_DATE, LOCALIN, STOCKIN, STOCKOUT) AS 
select inner_sub_table.UNIT, 
     inner_sub_table.PS_DATE, 
     sum(yav.LOCALIN)LOCALIN, 
     sum(yav.pur) STOCKIN, 
     sum(yav.sale) STOCKOUT 
    from YetAnotherView yav 
    group by yav.UNIT, yav.PS_DATE; 

请注意,这个观点荒谬的限制(该from子句不能包含子查询)被限制到MySQL。

+0

请在'union all'语句中加'from'。 –

+0

@Ravinder。 。 。谢谢。非常适合剪切和粘贴。 –

+0

谢谢Gordon Linoff。 – tanzeem