select a.name,b.name,c.name from a,b,c,d where a.bid=b.id and b.cid=c.id and c.did = d.id这是我的SQL,但是a.bid有null值,所有这样的查出来的数据就把null的记录给过滤掉了,我想把null值也给查出来,不知道怎么办,我试了,or a.bid is null但是不行,合并结果集就不要了;我采用的是hibernate,extjs,其实SQL应该查出来的是select new a(a.b.id,b.name,..) from a,b,c,d where ...

解决方案 »

  1.   

    这是因为你的逻辑本来就有问题,既然是外键就不应该有null啊,外键为null关联什么呢。除非你明确的告诉程序为null时关联什么,这样就可以了。或者采用左连接形式。
      

  2.   

    a.name,b.name,c.name     a.bid为空的话,也就是说b.name,c.name都不会有值,跟你整体sql语句的逻辑冲突,a.bid为null时你想要什么数据呢?
      

  3.   

    对了,a.bid这个字段我可以不设成外键的,
      

  4.   

    用你不为空的那一边表left join为空的那一边表
      

  5.   

    select a.name,b.name,c.name from a,b,c,d where a.bid(+)=b.id and b.cid=c.id and c.did = d.id