我在Materialized View中看到一个已经存在的view,里面的一段select文中有一段cross inner join的语句。这个视图在使用时没有报错。但是把这段select文拿出来执行就会报错。
select 文简化形式:
select * from tableA
cross inner join tableB第一次碰到这种情况不报错啊。
各位大大帮帮忙解释一下啊!!!

解决方案 »

  1.   

    cross inner join 
    怎么还有inner 呢
      

  2.   

    要加inner,要和 on 连用
    cross inner join tableB on(...)
      

  3.   

    --左:
    select * from  Aa left join  Bb on Aa.a=Bb.a
    --右:
    select * from  Aa right join  Bb on Aa.a=Bb.a
    --内
    select * from  Aa join  Bb on Aa.a=Bb.a
    --外:
    select * from  Aa full join  Bb on Aa.a=Bb.a
    --完全
    select * from Aa,Bb
    -- cross join
    select * from  Aa cross join  Bbcross join 是笛卡儿乘积就是一张表的行数乘以另一张表的行数
    left join 第一张表的连接列在第二张表中没有匹配是,第二张表中的值返回null
    right join 第二张表的连接列在第一张表中没有匹配是,第一张表中的值返回null 
    full join 返回两张表中的行 left join+right join
    inner join 只返回两张表连接列的匹配项
      

  4.   

    tableb表里只有一条数据!!!
      

  5.   

    下面是Oracle官方文档对SELECT的表示式图示,
    只有cross join,没有cross inner join

    http://download.oracle.com/docs/cd/B28359_01/server.111/b28286/statements_10002.htm#insertedID0
      

  6.   

    实体化视图里面的SQL:
    create materialized view VIEWA
    nocache parallel 1 build immediate
    using index pctfree 0
    refresh on demand force disable query rewrite as select
      a.row1,sum(a.row2) newrow
    from tableA a 
    cross inner join tableB b
    where a.row1=b.row1
    group by a.row1
    having sum(a.row2)>0这个视图里有6272条数据。
    tableB表里只有一条数据。select
      a.row1,sum(a.row2) newrow
    from tableA a 
    inner join tableB b on a.row1=b.row1
    group by a.row1
    having sum(a.row2)>0
    这个sql文检索出来6462条数据。
    我想在外面重新建立这个实体化视图。所以把视图中的sql文拿出来使用。直接就报错了。
      

  7.   

    改动一下:
    create materialized view VIEWA 
    nocache parallel 1 
    build immediate 
    using index pctfree 0 
    refresh force 
    with rowid 
    On demand 
     as select 
      a.row1,sum(a.row2) newrow 
    from tableA a 
    cross inner join tableB b 
    where a.row1=b.row1 
    group by a.row1 
    having sum(a.row2)>0 
      

  8.   


    没见过 cross inner join