比如说
select *
from table1 a, table2 b
where a.num = b.num(+) and a.line = b.line(+)大虾指点啊

解决方案 »

  1.   

    select *
    from table1 a left join table2 b
    on a.num = b.num and a.line = b.line
    等同
      

  2.   

    赞同 sbaz(万神渡劫)
    这样的结果包含A表中的全部数据..
    对于B表中两个条件都和A表条件相同的记录..
    B表中的那部分数据才会出现在结果集合中..否则都为NULL
      

  3.   

    sbaz(万神渡劫) 
    真是强!!!
    小弟佩服阿
      

  4.   

    select a.*, c.* 
    from torddtl a, tstkindtl c 
    where a.num || a.line = (c.fordnum || c.fordline)(+)这条语句怎么执行的时候报错呢
      

  5.   

    select *
    from table1 a left join table2 b
    on a.num = b.num and a.line = b.line这条语句在PL/SQL里执行的时候,报错啊
    “ORA-00933:SQL命令未正确结束”
      

  6.   

    select *
    from table1 a left join table2 b
    on a.num = b.num and a.line = b.line
    这个在9i里支持,在817里不支持。这个找到原因了。select a.*, c.* 
    from torddtl a, tstkindtl c 
    where a.num || a.line = (c.fordnum || c.fordline)(+)这条语句怎么执行的时候报错:“ORA-00936:缺少表达式”。
    怎么改呢?
      

  7.   

    select a.*, c.* 
    from torddtl a, tstkindtl c 
    where a.num || a.line = (c.fordnum || c.fordline)(+)
    ----------------
    a.num,a.line 是int型,改为 to_char(a.num) || to_char(a.line)
    后面两个一样
      

  8.   

    select a.*, c.* 
    from torddtl a, tstkindtl c 
    where (to_char(a.num) || to_char(a.line)) = (to_char(c.fordnum) || to_char(c.fordline))(+)我这样写了,还是不行啊
      

  9.   

    报的还是:
    “ORA-00933:SQL命令未正确结束”
      

  10.   

    select a.*, c.* 
    from torddtl a, tstkindtl c 
    where a.num || a.line = (c.fordnum || c.fordline)(+)这个是有漏洞的,即使能通过编译
    假设a.num=1 a.line=23
        c.fornum=2 c.fordline=3
    你就会得出错误的结果
      

  11.   

    嗯,是存在这样的漏洞。
    可是如果忽略这个漏洞的话,
    select a.*, c.* 
    from torddtl a, tstkindtl c 
    where a.num || a.line = (c.fordnum || c.fordline)(+)
    还是执行不通啊
      

  12.   

    select a.*, c.* 
    from torddtl a left join tstkindtl c 
    on a.num || a.line = c.fordnum || c.fordline
    这样应该是可以通的,用+的话是不能对字段处理了还加(+)。
    你非要这样的话就只有 。
    select b.*,d.*
    from
    (select a.*,a.num||a.line nl
    from  torddtl a) b,
    (select c.*,c.fordnum||c.fordline nl
    from tstkindtl c) d
    where b.nl=d.nl(+);
      

  13.   

    select a.*, b.*
    from table1 a left outer join table2 b
    on a.num = b.num and a.line = b.line