Fórum UNION FIRST #59962

10/07/2008

0

Tenho uma consulta que utiliza union, preciso limitar o número de registros desta consulta e para isso utilizo o comando ´first´.

O problema é que não consigo limitar o total de registros selecionados, apenas o total selecionado em cada ´select´.

Ex.:
select first 500 from tabela1
union
select first 500 from tabela2

Assim ele retorna 1000 registros e preciso limitar a 500.

Obs.: posso limitar os registros no ClientDataSet mas gostaria de saber se é possível fazer isto direto no banco.


Help

Help

Responder

Posts

10/07/2008

Joaoshi

Colega, tente assim:

SELECT FIRST 500 * FROM
(
select first 500 from tabela1
union
select first 500 from tabela2
)

Espero ter ajudado.


Responder

Gostei + 0

10/07/2008

Help

não rolou...


Responder

Gostei + 0

10/07/2008

Joaoshi

Colega, o exemplo que passei funcionou aqui com firebird 2.1


Responder

Gostei + 0

10/07/2008

Help

então é isso...

eu utilizo a versão 1.5...


Responder

Gostei + 0

10/07/2008

Help

quando utilizo PacketRecords onde ocorre o limite de registros? o controle é feito no ClientDataSet ou direto no banco de dados...

Ex.: no exemplo acima ele retorna 1000 do banco e filtra 500 no ClientDataSet ou filtra 500 direto no banco?


Responder

Gostei + 0

10/07/2008

Paulo

O Exemplo do joaoshi funcionou comigo aqui. Não acho que seja a versão do Banco não. Pode ser alguma coisa aí na sua Sql. Se eu fizer com Oracle e SqlServer, também funciona. Isso aí é SQL. O que pode acontecer é o FB 1.5 não suportar First, isso eu não tenho certeza. Fiz com SqlServer usando TOP também funcionou. Veja aí o seu código.


Responder

Gostei + 0

10/07/2008

Help

o first está disponível para a versão 1.5 do firebird...

acho que o problema não está no meu SQL porque ele funciona sem usar o SQL externo para fazer o limite de dados...


Responder

Gostei + 0

11/07/2008

Help

mais alguma dica?


Responder

Gostei + 0

11/07/2008

Lip

fera,

select first 15 nome
from cl_pacientes

funcionou sem problemas...

como eh o seu sql??(se vc tiver resolvido dá um aviso xD)


Responder

Gostei + 0

11/07/2008

Lip

desconsiderando minha msg anterior
esse exemplo serve pra vc?

select first 15 nm from (select first 15 p.nome as nm
from cl_pacientes p
union
select first 15 a.nome as nm
from cl_atendimentos a)


Responder

Gostei + 0

11/07/2008

Help

é mesmo, mas não funciona no firebird 1.5...

resolvi utilizando a propriedade PacketRecords do ClientDataSet...

valeu!


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar