用类似这样一个视图来替换create view v_view2
select a.*,b.* from a inner join b on a.colume1=b.colume1 left join aa on a.colume1=aa.colume1
union all
select a.*,c.* from a inner join c on a.colume1=c.colume1 left join aa on a.colume1=aa.colume1
union all
...
...
...
(总共7个)
查询语句就可以用
select * from v_view2

解决方案 »

  1.   

    更正下:用类似这样一个视图来替换create view v_view2
    select a.*,b.*,aa.* from a inner join b on a.colume1=b.colume1 left join aa on a.colume1=aa.colume1
    union all
    select a.*,c.*,aa.* from a inner join c on a.colume1=c.colume1 left join aa on a.colume1=aa.colume1
    union all
    ...
    ...
    ...
    (总共7个)
    查询语句就可以用
    select * from v_view2
      

  2.   

    楼上的方法虽然可行,但是治根不治本啊。这个视图我需要在多个地方left join多个不同的表,比如视图中的某个字段,在这里我把这个字段与aa表连接,在其他地方我又要拿他于bb表连接,我不可能每调用一次都建一个视图吧。还有其他更好的办法吗?我更想知道出现这个问题的原因。
      

  3.   

    ...要治根或者治本,可能需要你修改设计了,也就是b,c,d,e,f这几个表考虑合并在一起
      

  4.   

    又试出一个怪问题。我原来的SQL语句select a.*,aa.* from v_view1 a left join aa on a.colume1=aa.colume1提示错误。但是我改成select a.*,(select aa.colume2 from aa where aa.colume1=a.colume1) as colume2 from v_view1 a竟然没有问题,结果也是我要的。
    但是我要连接的不只一个字段。我加一个字段select a.*,(select aa.colume2 from aa where aa.colume1=a.colume1) as colume2,(select aa.colume3 from aa where aa.colume1=a.colume1) as colume3  from v_view1 a也能执行,但是记录明显少了。这又是什么问题呢?怪了。
      

  5.   

    视图改为这样试试create view v_view1
    select a.* ,b.*,aa.* from a
    inner join
    (
      select *  from b
      union all
      select * from c
    -----这里7个
    )b
    on a.colume1=b.colume1
    left join aa
    on a.colume1=aa.colume1goselect * from v_view1