有一条SQL语句是这样的,很简单select a.id, a.ArtistID, a.BookName, b.ArtistNameCn from db_Book a, db_Artists b where a.ArtistID = b.ArtistID就是2个表,a表存放书籍资料,b表存放作者另外有一个数据录入界面,ArtistID的数据绑定了一个下拉菜单,数据是从b表里读出来的,因为考虑到某些书籍没有对应的作者选择,所以约定可以不强制录入,我在这个下拉菜单上手动加了一行数据“不选”,值为0但是在通过上面的SQL语句读取的时候,发现了问题:a表的ArtistID有一些为0,b表是顺序编号从1开始的,在执行查询的时候where子句会让为0的数据不显示出来,有没办法解决?

解决方案 »

  1.   

    select a.id, a.ArtistID, a.BookName, b.ArtistNameCn from db_Book a left join db_Artists b on a.ArtistID = b.ArtistID
      

  2.   

    楼上正解,用LEFT JOIN 关联可以实现
      

  3.   

    select a.id, a.ArtistID, a.BookName, b.ArtistNameCn from db_Book a left join db_Artists b on a.ArtistID = b.ArtistID
    这句话没问题,但是我在提问题时候简化了一下,去其实是有3个表
    请问3个表要这么关联应该怎么搞?
    我另外还有一个分类表,db_Category c,关联条件是a.Category4 = c.cid
    left join的写法我不会,求组。
      

  4.   

    select a.id, a.ArtistID, a.BookName, b.ArtistNameCn 
     from db_Book a left join db_Artists b on a.ArtistID = b.ArtistID 
     left join db_Category c on a.Category4 = c.cid
     --where b.ArtistID is not null --可能需要加上,试一下 not null与null的效果吧