Это относится к Получить записи с максимальным значением для каждой группы сгруппированных результатов SQL , за исключением того, что необходимые группы находятся в отдельной таблице.
Допустим, у меня есть пара зданий, в каждом здании есть несколько офисов, и у меня есть люди, которые "регистрируются" в этих офисах для работы.
Эта таблица, называемая «офисы», сопоставляет здания с офисами:
building office
---
Seuss Yertle
Seuss Cubbins
Milne Pooh
Milne Eeyore
Milne Roo
Эта таблица, называемая "checkins", записывает, когда люди работали в каждом офисе:
id office person timestamp
---
1 Yertle Aaron 100
2 Cubbins Aaron 200
3 Pooh Aaron 300
4 Cubbins Charlie 300
5 Cubbins Aaron 700
6 Eeyore Beth 600
7 Pooh Beth 400
Я хотел бы сгенерировать таблицу, в которой сообщалось бы для каждого комбо здания с человеком, чья регистрация была самой последней для этого человека в этом здании:
building person checkin_id office timestamp
---
Seuss Aaron 5 Cubbins 700
Milne Aaron 3 Pooh 300
Milne Beth 6 Eeyore 600
Seuss Charlie 4 Cubbins 300
Я в недоумении, как мне это сделать. Стандартный трюк заключается в соединении таблицы с самим собой при сравнении соответствующего значения, а затем отбрасывании строк, где нет большего значения. Я предполагаю, что мне понадобятся две копии "checkins" и две копии "зданий" со сложным соединением между ними, но я не могу заставить NULL отображаться в правильном месте.
Я использую MySQL, если это поможет.