In the Slick examples there are a few examples of joining where one of the resulting columns can be nulls, as it can be the case when doing left, right, or outer joins. For
In Slick 3.1.1, the correct answer would be simply (as mentioned in some comments):
for { (c, s) <- coffees joinLeft suppliers on (_.supID === _.id) } yield (c, s)