Sql access

En Access que me devuelva los "n" primeros registros a partir de los "m" registros. Siendo por supuesto n y m números enteros positivos.
Particularizando a m=2 y n=3
Esto en mysql sería:
select * from tabla limit 2,3
Que me daría los registros 3º, 4º y 5º
En access tengo la opción TOP n siendo n el numero de registros que quiero obtener pero se me queda coja ya que no puedo indicarle cuantos registros iniciales quiero desestimar
Para esto no puedo suponer nada sobre la tabla sobre la que voy a realizar la consulta, es decir, no puedo jugar con un campo id, ni con ningún campo de la tabla.

1 respuesta

Respuesta
1
Bien, tal y como lo planteas resulta difícil (en access), la única forma que conozco de hacer lo que quieres pasa por poner el puntero en alguna parte del recordset, y para ello es necesario hacer referencia a algún campo de la tabla. Ej.:
SELECT Clientes.IdCliente, (Select Count (*) FROM [Clientes] as Temp WHERE [Temp].[IdCliente] < [Clientes].[IdCliente])+1 AS RowNum
FROM Clientes;
De esta forma obtenemos un campo RowNum autonumérico, y a partir de aquí solo habría que indicar a RowNum un criterio >n para excluir registros iniciales, junto con TOP n creo que conseguimos algo similar a lo que quieres. Visto SQL quedaría así:
SELECT TOP 17 Clientes.IdCliente, (Select Count (*) FROM [Clientes] as Temp
WHERE [Temp].[IdCliente] < [Clientes].[IdCliente])+1 AS RowNum
FROM Clientes
WHERE ((((Select Count (*) FROM [Clientes] as Temp
WHERE [Temp].[IdCliente] < [Clientes].[IdCliente])+1)>5));
En esta consulta excluimos los 5 primeros registros del recordset y solo mostramos los 17 siguientes registros.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas