三张表,author paper author_paper
author 作者,主键AuthorID
paper 文章,主键PaperID
因为他们是多对多的关系,所以用第三张表author_paper表示
它的主键是 PaperID,AuthorID。分别引用author和paper表
现在我想查询出所有论文的信息和论文的标题
sql为:
select paper.*,author.* from paper,author_paper,author where paper.PaperID=author_paper.PaperID and author.AuthorID=author_paper.AuthorID order by paper.PaperID,author_paper.AuthorPos
但是由于有的论文的作者没有,因此这样的paper跳过去了。我想查出所以的paper。
记得好像用inner join ,left join 或者 right join中的一个可以实现。不过不太熟悉,不知道怎么用。
谢谢!

解决方案 »

  1.   

    select paper.*, author.* 
    from author_paper as ap
    left join paper as p on ap.PaperID=p.PaperID
    left join author as a on ap.AuthorID=a.AuthorID 
      

  2.   

    select paper.*,author.* 
    from (author inner join author_paper using (AuthorID))
    right join paper using (PaperID).
        [align=center]====  ====
    [/align]
    .
    贴子分数<20:对自已的问题不予重视。
    贴子大量未结:对别人的回答不予尊重。
    .
      

  3.   

    由于您是新用户,所以特此介绍一下结贴的方法
    如果您问题已经得解决,请您及时结帖给分,以感谢帮助您的朋友。 结帖方法:点击版面右上方或右下方 [管理] ,进入页面后就可以输入密码,分别给分,结帖。 
     或参考:
    http://www.csdn.net/help/over.asp
    http://topic.csdn.net/u/20080110/19/7cb462f1-cac6-4c28-848e-0a879f4fd642.html
    =============================================================================
    问题解决,请及时结贴。  
     正确结贴方法:    
     管理帖子-->给分-->输入密码-->结贴.
        [align=center]====  ====
    [/align]
    .
    贴子分数<20:对自已的问题不予重视。
    贴子大量未结:对别人的回答不予尊重。
    .