sql不返回在另一个表中为null的值

epfja78i  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(323)

我正在尝试使用sqljoin函数从多个表中获取信息。
我的问题是我似乎不能得到想要的结果。

select a.DRINKER, sum(C.PRICE)
     from DRINKERS a
     left join ORDERS b on a.DRINKER = b.DRINKER
     join SERVES c on b.PUB = c.PUB and d.DRINK = c.DRINK
     group by a.DRINKER;

这将产生以下结果

----------------------
|DRINKER|sum(C.PRICE)|
----------------------
|  BOB  |   200.10   |
|  NED  |   172.50   |
|  JOE  |   270.90   |
|  TIM  |    80.10   |
----------------------

不过,我希望这是给所有的人在一个酒鬼这样:

----------------------
|DRINKER|sum(C.PRICE)|
----------------------
|  BOB  |   200.10   |
|  NED  |   172.50   |
|  JOE  |   270.90   |
|  TIM  |    80.10   |
|  PAT  |    null    |
|  ANN  |    null    |
----------------------

任何指导将不胜感激,如果你也可以解释背后的逻辑变化,这将是非常感谢,因为我想知道我应该做什么!提前谢谢!

vxf3dgd4

vxf3dgd41#

即使您在饮酒者和订单之间有一个左连接,订单和服务之间的连接也会过滤掉在第一个左连接中获得的任何空值。
要解决这个问题,您可以尝试进一步向左连接表

select a.DRINKER, sum(C.PRICE)
   from DRINKERS a
   left join ORDERS b on a.DRINKER = b.DRINKER
   left join SERVES c on b.PUB = c.PUB and d.DRINK = c.DRINK
  group by a.DRINKER;

相关问题