By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
CREATE TABLE booking (`ChildId` INTEGER, `Day` INTEGER, `Room` INTEGER, `Week` INTEGER);
INSERT INTO booking (`ChildId`, `Day`, `Room`, `Week`) VALUES
('1', '1', '20', '1'),
('1', '2', '20', '1'),
('2', '1', '20', '2'),
('3', '1', '20', '1'),
('3', '2', '20', '1'),
('3', '1', '20', '2');
Records: 6 Duplicates: 0 Warnings: 0
SELECT ChildId
FROM booking
WHERE Week IN (1, 2)
GROUP BY ChildId
HAVING MIN(Week) = 2
OR GROUP_CONCAT(DISTINCT CASE WHEN Week = 1 THEN Day END ORDER BY Day) <>
GROUP_CONCAT(DISTINCT CASE WHEN Week = 2 THEN Day END ORDER BY Day);
ChildId |
---|
2 |
3 |