我正在尝试使用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 |
----------------------
任何指导将不胜感激,如果你也可以解释背后的逻辑变化,这将是非常感谢,因为我想知道我应该做什么!提前谢谢!
1条答案
按热度按时间vxf3dgd41#
即使您在饮酒者和订单之间有一个左连接,订单和服务之间的连接也会过滤掉在第一个左连接中获得的任何空值。
要解决这个问题,您可以尝试进一步向左连接表