Có vẻ như Rooms
của bạn bảng chỉ chứa dữ liệu cho các công việc đang hoạt động. Điều này có ý nghĩa theo nhiều cách, bởi vì bạn không muốn lưu trữ thông tin về những người không thực sự chiếm trong phòng. Nhưng nó đặt ra một thách thức để tạo tập kết quả mong muốn của bạn, vì các phòng bị thiếu không có trong Rooms
.
Một lựa chọn ở đây là cách tiếp cận "bảng lịch". Bạn có thể LEFT JOIN
một bảng chứa tất cả các phòng cho Rooms
hiện tại của bạn bảng, sau đó gắn nhãn những người bị thiếu là nobody
.
SELECT t1.Room,
COALESCE(t2.OccupantName, 'Nobody') AS OccupantName
FROM
(
SELECT "Room 1" AS Room
UNION ALL
SELECT "Room 2"
UNION ALL
SELECT "Room 3"
UNION ALL
SELECT "Room 4"
) AS t1
LEFT JOIN Rooms AS t2
ON t1.Room = t2.Rooms
Lưu ý rằng tôi đã sử dụng truy vấn con dòng để tạo bảng cho tất cả các phòng. Trên thực tế, bạn có thể tạo một bảng thực tế trong Workbench chứa thông tin này.
Demo tại đây: