Извините за запутанное название, но это лучший способ объяснить это. Это не обычная проблема «последних из группы», и я не смог найти что-либо подобное в Интернете.MySQL: получите самую старую запись из последней группы
У меня есть таблица состояния, которая отслеживает, что люди делают на разных рабочих сайтах. Он содержит записи, которые связывают людей, статус и местоположение.
ID, start_date, person_ID, location_ID, status
1, 2014-10-12, 1, 1, job a
2, 2014-10-13, 2, 2, job b
3, 2014-10-15, 1, 3, job c
4, 2014-10-21, 1, 3, job d
5, 2014-10-22, 2, 4, job a
6, 2014-10-26, 2, 2, job d
мне нужно, чтобы быть в состоянии определить, сколько времени каждый человек, как было на текущем сайте - я надеюсь получить результаты, как это:
person_ID, location_ID, since
1, 3, 2014-10-15
2, 2, 2014-10-26
Получение, когда они начали текущая работа относительно легко, присоединившись к max (start_date), но мне нужен min (start_date) из заданий, выполненных в самом последнем месте.
Я пытаюсь присоединиться к min (start_date) в записях, которые соответствуют текущему местоположению (из самой последней записи), и это отлично работает, пока у меня не будет человека (например, человека 2), который имеет несколько посещений текущее местоположение ... вы можете увидеть в моих желаемых результатах, что мне нужна дата 10-26, а не 10-13, которая впервые была на сайте.
Мне нужен какой-то метод для сопоставления записей задания для данного человека, а затем итерация до тех пор, пока местоположение не будет соответствовать. Я полагаю, что должен быть какой-то способ сделать это с некоторыми подзапросами и некоторыми умными объединениями, но я еще не смог его найти, поэтому я был бы признателен за помощь.
Так почему 2014-10-15 для человека с идентификатором 1 вместо 2014-10-21 –
Потому что они прибыли на сайт 3 на 2014-10-15 годы и остались там, чтобы начать работу d в 2014-10-21. Запрос заключается в размещении наших сервисных техников, поэтому мне нужно знать, когда они прибыли на сайт, независимо от выполняемых работ. – whiteatom