Finding available schedules for multiple slots
Updated answer:

select 
    Slots.Id,
    Schedule.StartTime,
    Schedule.EndTime
from
    Slots
join Schedule on 1 = 1
left outer join SlotSchedule on Slots.ID = SlotSchedule.SlotId and Schedule.Id = SlotSChedule.ScheduleId
where SlotSchedule.SlotID is null;


... and here is the Fiddle.

This is perhaps not an orthodox approach. It does join the Slot and Schedule tables fully which may have serious performance issues on large tables - but I am guessing the number of rows in Schedule is tiny, and probably in Slot as well.

What this does:

(First, note, I would not use Slots as an alias for SlotSchedules when you also have a table named Slots - that's just way too confusing.)

Start with the Slots table. I then join this to the Schedule table (that's right - totally skipping the SlotSchedule table) on 1=1 - this means every row in Slots will join to every row in Schedule. 

The next join is back to the SlotSchedule table and it is an outer join. This time we have conditions - we say that the Slot ID on the SlotSchedule must match our Slot record, and the Schedule ID on the SlotSchedule table must match our Schedule record - but because it is an outer join, if there is no match, we still include the SlotSchedule row, but with a value of null.

This sets us up for the WHERE clause, which is simply - we want all rows where the SlotSchedule information is null, and so we check SlotSchedule.SlotID is null. 

In other words, for this combination of Slot and Schedule records, there is no SlotSchedule record, which is what we want.



Original answer:

Your where clause has:

where slots.SlotId is null


Your diagram shows:

slots.id


This is inconsistent.

Your results show slot_id = null (and your query requests this).

I don't understand how you can have slot records with null ID. It looks like you are trying to populate slotschedule with a row for every possible combination of slot and schedule, and to keep the ID null if the slot currently has no schedule.

I would recommend slotschedule only has a row when a slot is assigned to a schedule. 

The first thing I would want to understand better is why slot_id is null - I think change this design to resolve the issue.