Imprimir página | Cerrar ventana

SQL & TOP

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=84595
Fecha de impresión: 28/Marzo/2024 a las 14:34


Tema: SQL & TOP
Publicado por: McPegasus
Asunto: SQL & TOP
Fecha de publicación: 08/Julio/2019 a las 18:40
Hola foreros.

En una consulta utilizo la cláusula TOP para conocer n primeros registros y mostrarlos, luego otra sentencia SQL para conocer los siguientes n registros, así hasta el infinito y más allá :D.

En la segunda y posterior consulta para conocer los siguientes n registros, debo de partir filtrando desde el valor del último registro de la consulta anterior.

SELECT TOP 3 fldIdDispositivo, fldIdTercero, fldEtiqueta
FROM tblDispositivosAsignados
ORDER BY fldEtiqueta

SELECT TOP 3 fldIdDispositivo, fldIdTercero, fldEtiqueta
FROM tblDispositivosAsignados
WHERE fldEtiqueta > "Valor de la etiqueta"
ORDER BY fldEtiqueta

¿Habría alguna forma de conseguir lo mismo pero sin conocer el valor del último registro anterior?

SELECT TOP 3 DESDE 4 ...

O bien como indica este artículo: http://www.guillesql.es/Articulos/Paginar_datos_SQLServer2012_OFFSET_FETCH.aspx





-------------
Rafael [McPegasus]
Valencia
www.mcpegasus.net
..:: Tu Access, Mi Pasión ::..



Respuestas:
Publicado por: Mihura
Fecha de publicación: 08/Julio/2019 a las 20:38
Yo miraría este camino:
- crearía una tabla auxiliar con los datos que necesito, ordenados como quiero y numerada
- después ya es cosa de explotar esa tabla con un WHERE adecuado
    WHERE  Numerador Between ((3 * NumeroPasada - 1) + 1)  AND (3 * NumeroPasada)


-------------
Jesús Mansilla Castells.
Saludos desde Móstoles.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: pitxiku
Fecha de publicación: 09/Julio/2019 a las 16:33
Otras posibilidades:

- https://stackoverflow.com/questions/8627032/ms-access-limit-x-y


Publicado por: McPegasus
Fecha de publicación: 09/Julio/2019 a las 17:43
Hola Pitxiku,

Ok, es una solución también válida, me quedo el link para la siguiente ocasión.

Muchas gracias.


-------------
Rafael [McPegasus]
Valencia
www.mcpegasus.net
..:: Tu Access, Mi Pasión ::..


Publicado por: McPegasus
Fecha de publicación: 09/Julio/2019 a las 17:48
¿¿Ya de vuelta??

Lo he resuelto con una función que retorna el sql adecuado como origen del registro del informe, en total son 3 veces por ahora con un total de 18 columnas, 6 por informe.

Un abrazo y gracias de nuevo.




-------------
Rafael [McPegasus]
Valencia
www.mcpegasus.net
..:: Tu Access, Mi Pasión ::..


Publicado por: kkodalton
Fecha de publicación: 10/Julio/2019 a las 08:32
Hola
Que nombre reciben estas consultes , o donde podria encontrar mas informacion ( ejemplos sobre todo) sobre este tipo de consultes?

select * from ( select * ....

Gracias


Publicado por: Mihura
Fecha de publicación: 10/Julio/2019 a las 09:24
Hola kkodalton:

Una de las mejores guías de SQL (deberían incluirla en la ayuda de Access Tongue).

http://www.mvp-access.es/softjaen/" rel="nofollow - SoftJaén: Manual SQL - Access


Ed. busca en manuales.


-------------
Jesús Mansilla Castells.
Saludos desde Móstoles.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: mounir
Fecha de publicación: 10/Julio/2019 a las 15:58
Hola!

Creo que se refiere a las subconsultas anidadas:

https://www.aulaclic.es/sql/t_5_1.htm" rel="nofollow - https://www.aulaclic.es/sql/t_5_1.htm

-------------
Un Saludo.


Publicado por: kkodalton
Fecha de publicación: 11/Julio/2019 a las 09:36
Gracias pero no es esto lo que busco. Las consultas anidadas despues del from esta el nombre de la tabla, però el ejemplo que ha enviado Pitxiku despues del from hay otra select.

SELECT TOP 10 A.Id
        FROM [
               SELECT TOP 30 ....
Yo diria que en el segundo select equivale al nombre de la tabla, pero en lugar de una tabla es otra consulta.
Es parecido a una consulta anidada pero diferente.

Gracias


Publicado por: xavi
Fecha de publicación: 11/Julio/2019 a las 09:52
El nombre que reciben (para mi) es el de subconsultas. Desconozco si tienen otro nombre.

Imaginemos el siguiente escenario:

ConsultaA que devuelve una determinada información (filtrada, agrupada y/o ordenada)

ConsultaB que devuelve información de la ConsultaA (también filtrada, agrupada y/o ordenadada)

Puedes hacer una ConsultaB así:

SELECT algo FROM ConsultaA WHERE....

o hacerla así:

SELECT algo FROM (SELECT unacosa FROM unatabla WHERE uncriterio) As Subconsulta

La ventaja de la segunda opción es que, si por error eliminas o modificas la ConsultaA, la ConsultaB no se ve afectada.

Un saludo


-------------
Xavi, un minyó de Terrassa

http://www.llodax.com" rel="nofollow - Mi web



Imprimir página | Cerrar ventana