Fórum Dúvida com SQL - rows ? to ? #27043
12/02/2009
0
Bom dia, estou com a seguinte dúvida em como pegar uma determinada linha de uma consulta, ou seja
a minha tabela possui 3 regitros baseado em um determinado select:
2009-03-11
2008-07-22
2008-02-14
eu gostaria de pegar a 2ª data anterior q o select me retornar (2008-07-22).
No firebird eu uso: [b:107028fc7d]ORDER BY DATAATEND DESC ROWS 2 TO 2[/b:107028fc7d] se quiser a segunda data [b:107028fc7d]ROWS 2 TO 2[/b:107028fc7d] (2008-07-22)
mas como estou migrando o meu sistema para o postgreSQL ele não aceita esse SQL, e dai tentei usar o LIMIT e OFFSET, mas no caso do OFFSET ocorre um problema se eu quiser pegar por exemplo a 2ª data anterior ele me retornará as linhas:
[b:107028fc7d]LIMIT 2 OFFSET 1[/b:107028fc7d] :
2008-07-22
2008-02-14
ou então [b:107028fc7d]LIMIT 2 OFFSET 2[/b:107028fc7d] :
2008-02-14
dai a data de 2008-07-22 que para mim interessa eu não estou conseguindo pegar
se alguem puder dar uma dica de como ficaria essa sintaxe,
Atenciosamente,
a minha tabela possui 3 regitros baseado em um determinado select:
2009-03-11
2008-07-22
2008-02-14
eu gostaria de pegar a 2ª data anterior q o select me retornar (2008-07-22).
No firebird eu uso: [b:107028fc7d]ORDER BY DATAATEND DESC ROWS 2 TO 2[/b:107028fc7d] se quiser a segunda data [b:107028fc7d]ROWS 2 TO 2[/b:107028fc7d] (2008-07-22)
mas como estou migrando o meu sistema para o postgreSQL ele não aceita esse SQL, e dai tentei usar o LIMIT e OFFSET, mas no caso do OFFSET ocorre um problema se eu quiser pegar por exemplo a 2ª data anterior ele me retornará as linhas:
[b:107028fc7d]LIMIT 2 OFFSET 1[/b:107028fc7d] :
2008-07-22
2008-02-14
ou então [b:107028fc7d]LIMIT 2 OFFSET 2[/b:107028fc7d] :
2008-02-14
dai a data de 2008-07-22 que para mim interessa eu não estou conseguindo pegar
se alguem puder dar uma dica de como ficaria essa sintaxe,
Atenciosamente,
Andersonpalhano
Curtir tópico
+ 0
Responder
Posts
12/02/2009
Jair Bg
Boa tarde, você escolheu o uso do OFFSET e LIMIT você quer pegar os dados do registro anterior Ok?,
no caso, para pegar os dados apenas da segunda linha o LIMIT será ´1´ (uma única linha), e o OFFSET
será ´1´ (setado ao segundo registro da ordenação).
PS: lembre-se da ´ordenação´ (ORDER BY data DESC) para a consulta que o registro será o anterior...
EX: SELECT data FROM tabela ORDER BY data DESC LIMIT 1 OFFSET 1
Retorne caso duvidas...
no caso, para pegar os dados apenas da segunda linha o LIMIT será ´1´ (uma única linha), e o OFFSET
será ´1´ (setado ao segundo registro da ordenação).
PS: lembre-se da ´ordenação´ (ORDER BY data DESC) para a consulta que o registro será o anterior...
EX: SELECT data FROM tabela ORDER BY data DESC LIMIT 1 OFFSET 1
Retorne caso duvidas...
Responder
Gostei + 0
12/02/2009
Andersonpalhano
Olá Jair, mto obrigado, agora entendi, estava com o conceito errado do LIMIT E OFFSET, vlw, abraço.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)