select distinct Place.PlaceId, Place.Loc, Day.DayId
from Place
cross join Day
left join Place AS X
on Place.PlaceId = X.PlaceId
and Place.Loc = X.Loc
and Day.DayId = X.DayId
where x.DayId is null
This query firstly produces the cross join between Place and Day (
from Place cross join Day), in order to generate all possible combinations.
Then try to join each (produced) record with the matching one within Place (
left join Place).
Then excludes all record where a match is not found (
where x.DayId is null).
If you like, you can wrap the cross join into a subquery in order to separate its logic from the left join
select _All.* from
(
select distinct Place.PlaceId, Place.Loc, Day.DayId
from Place, Day
) as _All
left join Place AS X
on _All.PlaceId = X.PlaceId
and _All.Loc = X.Loc
and _All.DayId = X.DayId
where x.DayId is null