Obtenha intervalo total de tempo de várias linhas se a sequência não estiver quebrada
Eu tenhoWork
ePerson
abelas (estes são apenas exemplos para entender o problema
Work
mesid INTEGER
person_id INTEGER
dt_from DATETIME
dt_to DATETIME
Person
mesperson_id INTEGER
name VARCHAR(50)
DadoWork
mesid | person_id | dt_from | dt_to
-------------------------------------------------
1 | 1 | 2011-01-01 | 2011-02-02
2 | 1 | 2011-02-02 | 2011-04-04
3 | 1 | 2011-06-06 | 2011-09-09
4 | 2 | 2011-01-01 | 2011-02-02
5 | 2 | 2011-02-02 | 2011-03-03
....etc.
Person
mesApenas nomes de pessoas com o ID da pessoa
Saída esperadaPerson 1 : 2011-01-01 - 2011-04-04
Person 1 : 2011-06-06 - 2011-09-09
Person 2 : 2011-01-01 - 2011-03-03
Interval deve estar em sequência. Não pode ser quebrado em algum lugar no meio. É por isso que a Pessoa 1 tem dois intervalos.
Estou usando o postgres se isso mudar alguma coisa. Você tem alguma opinião? Eu queria fazê-lo em uma consulta, mas se não houver essa solução, farei alguma intercalação de intervalo em php.