Учтите следующее. Обратите внимание, что я немного изменил вашу структуру, чтобы помочь пониманию:
DROP SCHEMA IF EXISTS cattery2;
CREATE SCHEMA CATTERY2;
USE CATTERY2;
CREATE TABLE cats
(cat_id SERIAL PRIMARY KEY
,name VARCHAR(30)
,sex CHAR(1) NOT NULL
);
CREATE TABLE bookings
(booking_id SERIAL PRIMARY KEY
,start_Date DATE NOT NULL
,end_date DATE NOT NULL
);
CREATE TABLE rooms
(room_id SERIAL PRIMARY KEY
,capacity TINYINT NOT NULL
);
CREATE TABLE room_booking
(room_id INT NOT NULL
,booking_id INT NOT NULL
,PRIMARY KEY(room_id,booking_id)
);
CREATE TABLE cat_booking
(cat_id INT NOT NULL
,booking_id INT NOT NULL
,PRIMARY KEY(cat_id,booking_id)
);
INSERT INTO bookings(start_date, end_date) VALUES
("2019-11-22", "2019-11-25"),
("2019-11-24", "2019-11-28"),
("2019-12-01", "2019-12-02"),
("2019-12-01", "2019-12-06"),
("2019-12-02", "2019-12-03"),
("2019-12-04", "2019-12-10"),
("2019-12-04", "2019-12-10"),
("2019-12-05", "2019-12-13"),
("2019-12-16", "2019-12-19"),
("2019-12-26", "2019-12-28"),
("2019-12-26", "2020-01-01"),
("2019-12-28", "2020-01-02"),
("2019-12-31", "2020-01-05"),
("2020-01-03", "2020-01-08"),
("2020-01-05", "2020-01-11"),
("2020-01-06", "2020-01-09"),
("2020-01-06", "2020-01-11"),
("2020-01-08", "2020-01-18"),
("2020-01-11", "2020-01-15"),
("2020-01-15", "2020-01-17"),
("2020-01-15", "2020-01-18");
INSERT INTO rooms (room_id,capacity) VALUES
( 1,4),
( 2,4),
( 3,4),
( 4,2),
( 5,2),
( 6,2),
( 7,2),
( 8,2),
( 9,2),
(10,2);
INSERT INTO room_booking (booking_id,room_id) VALUES
( 1, 4),
( 2, 3),
( 3, 4),
( 4, 5),
( 5, 6),
( 6, 7),
( 7, 3),
( 8, 2),
( 9, 1),
(10, 8),
(11, 3),
(12, 9),
(13, 2),
(14, 10),
(15, 4),
(16, 5),
(17, 6),
(18, 7),
(19, 2),
(20, 1),
(21, 10);
INSERT INTO cats (name,sex) VALUES
('Aatrox', 'm'),
('Ahri', 'f'),
('Blitz', 'm'),
('Curley', 'm'),
('Mandy', 'm'),
('Nami', 'f'),
('Kog', 'm'),
('Caitlyn', 'f'),
('Barney', 'm'),
('Gnar', 'm'),
('Charley', 'f'),
('Bundy', 'm'),
('Ringo', 'm'),
('Smiley', 'm'),
('Bentley', 'f'),
('Barney', 'm'),
('Yuumi', 'f'),
('Rammus', 'm'),
('Viktor', 'm'),
('Xerath', 'm'),
('Azir', 'm'),
('Reginald', 'm'),
('Harry', 'm'),
('Indie', 'f'),
('Dotty', 'f'),
('Wesley', 'm'),
('Karma', 'f'),
('Nami', 'f'),
('Nautalus', 'm'),
('Tristy', 'f'),
('Kaisa', 'f'),
('Baron', 'm'),
('Braum', 'm'),
('Alistar', 'm'),
('Ahri', 'f');
INSERT INTO cat_booking(booking_id,cat_id) VALUES
( 1, 1),
( 2, 2),
( 2, 3),
( 3, 1),
( 4, 2),
( 5, 3),
( 5, 4),
( 6, 5),
( 7, 6),
( 7, 7),
( 7, 8),
( 8, 9),
( 8, 10),
( 8, 11),
( 9, 12),
( 9, 13),
( 9, 14),
(10, 15),
(11, 16),
(11, 17),
(11, 18),
(12, 19),
(12, 20),
(13, 21),
(13, 22),
(13, 23),
(14, 24),
(14, 25),
(15, 26),
(16, 27),
(16, 28),
(17, 29),
(18, 30),
(19, 31),
(19, 32),
(20, 33),
(20, 34),
(21, 35);
И запрос ...
SELECT DISTINCT r.room_id
, r.capacity
, x.booking_id
, x.start_date
, x.end_date
FROM rooms r
LEFT
JOIN
( SELECT b.booking_id
, b.start_date
, b.end_date
, rb.room_id
FROM bookings b
JOIN room_booking rb
ON rb.booking_id = b.booking_id
WHERE '2019-11-24' BETWEEN b.start_date AND b.end_date
) x
ON x.room_id = r.room_id
ORDER
BY r.room_id
, r.capacity
, x.start_date
, x.booking_id;
+---------+----------+------------+------------+------------+
| room_id | capacity | booking_id | start_date | end_date |
+---------+----------+------------+------------+------------+
| 1 | 4 | NULL | NULL | NULL |
| 2 | 4 | NULL | NULL | NULL |
| 3 | 4 | 2 | 2019-11-24 | 2019-11-28 |
| 4 | 2 | 1 | 2019-11-22 | 2019-11-25 |
| 5 | 2 | NULL | NULL | NULL |
| 6 | 2 | NULL | NULL | NULL |
| 7 | 2 | NULL | NULL | NULL |
| 8 | 2 | NULL | NULL | NULL |
| 9 | 2 | NULL | NULL | NULL |
| 10 | 2 | NULL | NULL | NULL |
+---------+----------+------------+------------+------------+
Также обратите внимание, что здесь нет VIEW. Это намеренно. Запросы к VIEWS в MySQL имеют ограниченный доступ к базовым индексам, что делает их (в моем VIEW) практически бесполезными.