3
Запрос выводит номера, в которых нет свободных мест, потому что в них живут постояльцы
SELECT DISTINCT id_nomera
FROM postoyaltsy
WHERE Data_viseleniia IS NULL
OR Data_viseleniia > CURDATE();
4
SELECT n.id_nomera
FROM nomera n
LEFT JOIN postoyaltsy p ON n.id_nomera = p.id_nomera
AND (p.Data_viseleniia IS NULL OR p.Data_viseleniia > CURDATE())
WHERE p.id_nomera IS NULL;