Я бы хотел отследить движение гостей, которые останавливаются в отеле (гипотетически).Таким образом, я могу создать 3 таблицы.
- гости = люди, которые останавливаются в отеле
- room_guest_is_in = где видели гостя
- комнаты = конкретная информация ономер
гости
guest_id | name
1 | Bob
2 | Mike
номера
room_id | room_name
1 | Casino
2 | Resturant
3 | Spa
room_guest_is_in
guest_id is a foreign key from the guests table.
last updated is the last time we recorded them in the room.
room_id is a foreign key from the room table
rguest_id | guest_id | roomd_id | last_updated
1 | 1 | 3 | 2019-03-18 10:04:16
2 | 1 | 3 | 2019-03-18 11:19:34
3 | 1 | 2 | 2019-03-18 12:11:36
4 | 2 | 1 | 2019-03-18 12:03:20
Из приведенных выше данных вы можетесм. Боб был в Спа дважды в 2019-03-17 10:04:16
и 2019-03-17 11:19:34
и в ресторане один раз.
Мой вопрос: Я хочу выбрать все комнаты, в которых был Боб. Однако, если Боб был в комнате более одного раза, он должен показывать только последнюю запись для этой комнаты.Это означает, что комната не появляется более одного раза в операторе выбора
Я хочу, чтобы результаты были похожи на:
guest_id | name | room_name | last updated
1 | Bob | Spa | 2019-03-17 11:19:34
1 | Bob | Gym | 2019-03-17 12:11:36
Я получаю результаты вроде:
guest_id | name | room_name | last updated
1 | Bob | Spa | 2019-03-17 11:19:34
1 | Bob | Gym | 2019-03-17 12:11:36
1 | Bob | Spa | 2019-03-17 10:04:16
Мой SQL:
SELECT guests.guest_id, guests.name, rooms.room_name, room_guest_is_in.last_updated
FROM guests
INNER JOIN room_guest_is_in ON guests.guest_id = room_guest_is_in.guest_id
INNER JOIN rooms.room_id ON room_guest_is_in.room_id = rooms.room_id
WHERE guests.guest_id = 1
ORDER BY room_guest_is_in.last_updated DESC