COUNT y TOP juntos

29/07/2004 - 14:33 por David R. | Informe spam
Buenas a todos,

Con TOP limito el número de filas devueltas en el conjunto
de resultados, pero tambien necesito recoger cuantas filas
hay en total de la consulta.

SELECT TOP 5 ProductName
FROM dbo.Products

Devuelve los primeros 5 pero... ¿Cuantos hay en total?. Me
interesa saber si se puede saber sin realizar otra vez la
consulta, porque necesito devolver "n productos
encontrados de n existentes" pero mi consulta puede ser
bastante pesada y no seria bueno ejecutarla dos veces.

Muchas gracias!!

WK2003 - SQL 2000 Enterprice.

Preguntas similare

Leer las respuestas

#1 Carlos Sacristan
29/07/2004 - 14:51 | Informe spam
Por ejemplo:

SELECT TOP 5 orderid, requireddate , (SELECT COUNT(*) FROM
northwind..orders) numeroTotal
FROM northwind..orders


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"David R." escribió en el mensaje
news:657701c47568$31005350$
Buenas a todos,

Con TOP limito el número de filas devueltas en el conjunto
de resultados, pero tambien necesito recoger cuantas filas
hay en total de la consulta.

SELECT TOP 5 ProductName
FROM dbo.Products

Devuelve los primeros 5 pero... ¿Cuantos hay en total?. Me
interesa saber si se puede saber sin realizar otra vez la
consulta, porque necesito devolver "n productos
encontrados de n existentes" pero mi consulta puede ser
bastante pesada y no seria bueno ejecutarla dos veces.

Muchas gracias!!

WK2003 - SQL 2000 Enterprice.
Respuesta Responder a este mensaje
#2 David R.
29/07/2004 - 14:56 | Informe spam
Gracias ;-)


Por ejemplo:

SELECT TOP 5 orderid, requireddate , (SELECT COUNT


(*) FROM
northwind..orders) numeroTotal
FROM northwind..orders


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"David R." escribió


en el mensaje
news:657701c47568$31005350$
Buenas a todos,

Con TOP limito el número de filas devueltas en el conjunto
de resultados, pero tambien necesito recoger cuantas filas
hay en total de la consulta.

SELECT TOP 5 ProductName
FROM dbo.Products

Devuelve los primeros 5 pero... ¿Cuantos hay en total?. Me
interesa saber si se puede saber sin realizar otra vez la
consulta, porque necesito devolver "n productos
encontrados de n existentes" pero mi consulta puede ser
bastante pesada y no seria bueno ejecutarla dos veces.

Muchas gracias!!

WK2003 - SQL 2000 Enterprice.



.

Respuesta Responder a este mensaje
#3 ulises
30/07/2004 - 05:36 | Informe spam
Si bien con datos pequeños, no debería haber mucha diferencia en el
rendimiento me parece que sería más óptimo realizar dos consultas, por
ejemplo se podría definir un procedimiento alamcenado que retorne el
total de registros y el conjunto de resultados deseados, por ejemplo :

create proc obtienelista (@cantidad int output)
as
set nocount on
select @cantidad = count(*) from orders
select top 5 * from orders
set nocount off

y la ejecución :

declare @cnt int
exec obtienelista @cnt output
select @cnt


OrderID CustomerID ...
10248 VINET...
10249 TOMSP...
10250 HANAR...
10251 VICTE...
10252 SUPRD...

830

(1 row(s) affected)

Saludos,
Ulises


On Thu, 29 Jul 2004 14:51:44 +0200, "Carlos Sacristan" <csacristan
ARROBA mvps.org> wrote:

Por ejemplo:

SELECT TOP 5 orderid, requireddate , (SELECT COUNT(*) FROM
northwind..orders) numeroTotal
FROM northwind..orders


Un saludo

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida