Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

itlpps

Total de registros, e os dados

Recommended Posts

Boa..

 

Preciso pegar os 10 primeiros registros e o número total de registros da tabela.

 

Tem como pegar o total sem trazer os registros?

 

 

Grato !

Compartilhar este post


Link para o post
Compartilhar em outros sites

não estou certo desta síntexe todavia

select top 10 from tabela

desta estou certo.

select count(*) from tabela

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim.

 

Se eu transformar o Count(*) em linq, e fizer outro linq pra pegar os registros fica custoso para a aplicação?

 

Queria isso em uma query


Um amigo aqui, fez assim..

SELECT COUNT(ID) OVER() AS "TOTAL REGISTROS", 
       SSL.*
 FROM (
SELECT ROW_NUMBER() OVER (ORDER BY ID) AS ROWNUM,        
       ID,
       DESCRICAO 
  FROM PERMISSAO
) AS SSL


WHERE SSL.ROWNUM BETWEEN 1 AND 10 AND Descricao LIKE '%tes%'

O principio é esse, mas TOTAL REGISTROS está trazendo número de registro da query, e não o número total de registros..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com o OVER se trás os registros e os totais , é uma forma , quanto ao custo para saber o total é preciso somar todos os registros.

 

A vantagem do OVER é tratar isto na camada de visualização com apenas uma sql.

Compartilhar este post


Link para o post
Compartilhar em outros sites
SELECT * FROM PERMISSAO WHERE DESCRICAO LIKE '%tes%'

Me retorna 34 registros.

O select do post #3 me retorna 8, e na coluna "TOTAL REGISTROS" tudo 8.

 

Queria que na coluna "TOTAL REGISTROS" viesse 34.

 

To pesquisando aqui também.. Mas não entendi muito bem esse OVER() :upset:

Compartilhar este post


Link para o post
Compartilhar em outros sites

O Over esta servindo para enumerar as linhas para vc...

 

Qdo vc diz:

 


Preciso pegar os 10 primeiros registros e o número total de registros da tabela.

é na msm consulta??

Compartilhar este post


Link para o post
Compartilhar em outros sites

O Over esta servindo para enumerar as linhas para você...

 

Qdo você diz:

 

é na msm consulta??

Se possível..

 

Na verdade estou fazendo um esquema de paaginação, queria fazer em linq, mas se não der, o jeito vai ser uma proc mesmo..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui..

Ficou assim:

SELECT * FROM (
SELECT COUNT(ID) OVER() AS "TOTAL REGISTROS", 
  SSL.*
FROM(
SELECT ROW_NUMBER() OVER (ORDER BY ID) AS ROWNUM,        
  ID,
  DESCRICAO 
    FROM PERMISSAO 
 WHERE DESCRICAO LIKE '%TES%'
)AS SSL ) AS TTL
WHERE TTL.ROWNUM BETWEEN 1 AND 10 

Será que da pra dar uma otimizada nisso?

Ou transformar em linq?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui em linq:

 

var query = (from p in
                                 (from p in ctx.Permissao
                                  where p.Descricao.Contains(permissao.Descricao)
                                  select new
                                             {
                                                 pe = p,
                                                 agrupa = "x"
                                             })
                             group p by new { p.agrupa }
                                 into g
                                 from i in g
                                 select new
                                            {
                                                per = i.pe,
                                                row = g.Count(p => p.agrupa != null),
                                            }).ToList()
                                              .Skip((pagina - 1) * quantidadeLinha)
                                              .Take(quantidadeLinha);

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.