Obter Informações de Outras Linhas no Mesmo Select
Tendo um banco de dados para controle de despesas:
1 | select * from despesas |
| id | valor | descricao |
|---|---|---|
| 1 | 12,00 | Almoço |
| 2 | 150,00 | Gasolina |
| 3 | 30,00 | Jantar |
| 4 | 61,00 | Conta de água |
| 5 | 180,00 | Conta de Luz |
| 6 | 100,00 | Internet |
Agora queremos exibir na mesma consulta, a despesa anterior, a atual e a próxima despesa do mês.
Para isso precisamos saber qual o valor da linha anterior e o valor da linha posterior do select.
Para isso precisamos fazer LEFT JOIN com a própria tabela. Veja o exemplo:
1 | select |
Resultado:
| DESPESA_ANTERIOR | DESPESA_ATUAL | DESPESA_POSTERIOR |
|---|---|---|
| (null) | Almoço | Gasolina |
| Almoço | Gasolina | Jantar |
| Gasolina | Jantar | Conta de água |
| Jantar | Conta de água | Conta de luz |
| Conta de água | Conta de luz | Internet |
| Conta de luz | Internet | (null) |
Para saber as despesas anterioes e posteriores ao dia 3:
1 | select |
Resultado:
| DESPESA_ANTERIOR | DESPESA_ATUAL | DESPESA_POSTERIOR |
|---|---|---|
| Gasolina | Jantar | Conta de água |