TOTAL DE REGISTRO , QUAL MELHOR MANEIRA

JOAOBENEVIDES 03/05/2016 09:07:54
#461796
Ola Pessoal Biom dia tenho a seguinte query = select data_compra,idPedido,nome,TipoPagamento,NumeroDocumento from Pedido_site where Importado=0 and Int_Pagamento=1 order by Data_Compra desc

queria saber qual a melhor opção sem usar count(*) para saber a a quantidade de registro estou usando sqlDataReader dr = null; para armazenar as informação

Obrigado

Joao
DAMASCENO.CESAR 03/05/2016 16:52:18
#461811
se a intenção é apenas o total de registros, conte sua chave primária e use um group by nela:
SELECT COUNT(*) AS Total from Pedido_site where Importado=0 and Int_Pagamento=1 group by SuaChavePrimaria
JOAOBENEVIDES 04/05/2016 07:55:49
#461815
este é o problema nao queria usar o cont(*) pois minha query é grande
ACCIOLLY 04/05/2016 09:48:19
#461817
Resposta escolhida
Qual banco utiliza?
Independente do banco, você pode criar uma View nele e na aplicação fazer a contagem com um SQL mais curto
OMAR2011 04/05/2016 10:02:40
#461818
Olhe isto.
http://www.macoratti.net/vbn_drc.htm.
PERCIFILHO 04/05/2016 12:02:25
#461823
Se você estivesse usando um DataSet ou um DataTable seria mais fácil pois existe a propriedade Count().
Mas se é um DataReader, creio que a única forma, seria você fazer duas querys:
uma para retornar somente a quantidade de registros, sendo que você precisaria percorrer o DataReader e somando +1 em um contador;
e outra query com todos os dados que você precisa que retornem.
FFCOUTO 04/05/2016 13:57:33
#461829
Creio que você está fazendo uma confusão com o uso do asterisco (*) na função Count. Veja o link https://msdn.microsoft.com/pt-br/library/ms175997%28v=sql.120%29.aspx.

No caso do Count, o asterisco indica que nenhuma linha ficará de fora da contagem o que garante a contagem correta dos dados em tabelas que possam ter valores duplicados ou nulos. Veja a explicação detalhada no link. Diferente do Select onde ele seleciona todas as colunas. Veja que no caso do Count ele é utilizado para linhas (que são os registros). Percebeu a diferença?

Tópico encerrado , respostas não são mais permitidas