有4个表,ISSUES(用户提交的issue基本信息) , MESSAGES(issue相关的消息) , DOCUMENTS(issue相关的附件), COMMENTS(用户和客服之间的电子邮件交流记录)。每个issue有0~n个messages, 0~n个documents,0~n个comments每个表中都有issue_ID字段,在ISSUE_DB_ISSUE中是主键,在其它三个表中是外键。我要:在一个页面内显示所有的ISSUE,如果该ISSUE有documents, comments或者message也都显示出来。不考虑效率。非常感谢!100分献上。

解决方案 »

  1.   

    select * 
    from  issues t1,
          messages t2,
          documents t3,
          comments t4
    where t1.issue_id = t2.issue_id(+)
    and   t1.issue_id = t3.issue_id(+)
    and   t1.issue_id = t4.issue_id(+)
    order by t1.issue_id;
      

  2.   

    left join应该就能解决问题吧
      

  3.   


    up改成left join的方式select t1.* from issues left join messages t2 on t1.issue_id = t2.issue_id left join on documents t3 on t1.issue_id = t3.issue_id left join on comments t4 on t1.issue_id = t4.issue_id和(+)是一样的方式,不过是用标准的left join实现的。
      

  4.   

    Left Join 可以解决这个问题
      

  5.   

    codeselect * from  
          issues t1, 
          messages t2, 
          documents t3, 
          comments t4 
    where t1.issue_id= t2.issue_id(+)
      and  t1.issue_id= t3.issue_id(+)
      and  t1.issue_id= t4.issue_id(+)
    orderby t1.issue_id;