Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-11-2006
aquosoft aquosoft is offline
Miembro
 
Registrado: oct 2006
Posts: 17
Poder: 0
aquosoft Va por buen camino
paginacion, problemas...

buenas gentes, estoy intentando mostrar los resultados de una consulta en paginas...
investigando y buscando por todos lados, me di cuenta que siempre llego a lo mismo.. el codigo encontrado no funciona o no hace lo esperado..
despues de pensar un rato arme una consulta que en teoria pagina, pero tengo problemas cuando quiero ordenar por un campo string (anda medio mal)... la idea es tener tres selects anidados, pero para entenderlos, es mejor ir de adentro hacia afuera... (trabajo en visual basic y sql server,. asi ke la forma de enviar parametros cuando tenga terminada la query puede diferir de la de delphi, pero lo que kiero ver por que no anda es la consulta misma...)

Código:
SELECT * FROM (
            SELECT TOP 10 * FROM ( 
                SELECT top 10 apellido,nombre,nrodoc FROM afiliados where apellido like 'PON%' order by apellido asc) as x1 
            ORDER by apellido DESC) as x2 
ORDER by apellido ASC
la idea es pasar valores a los select top el de la primer consulta es resultado de multiplicar 10 (la cantidad de registros por pagina) X el numero de pagina
[para la pagina 2 el valor del select central seria 20]

voy a dar por sentado que ya tenemos los primeros 10 registros y ahroa queremos los segundos 10

Código:
SELECT top 20 apellido,nombre,nrodoc FROM afiliados where apellido like 'PON%' order by apellido asc) as x1 
para la primer consulta, el select top 20 interno busca los primeros 20 registros que correspondan con la clausula where ordenados por apellido en forma ascendente...

Código:
SELECT TOP 10 * FROM ( 
                SELECT top 20 apellido,nombre,nrodoc FROM afiliados where apellido like 'PON%'  order by apellido asc) as x1 
ORDER by apellido DESC) as x2 
esta segunda parte de nuestra consulta selecciona en forma descendente los 20 registros de la primer consulta y toma los primeros 10 (al estar en orden descendente.. serian los ultimos 10, los de la segunda pagina, es decir.. los que nos interesan.

Código:
SELECT * FROM (
            SELECT TOP 10 * FROM ( 
                SELECT top 20 apellido,nombre,nrodoc FROM afiliados where apellido like 'PON%' order by apellido asc) as x1 
            ORDER by apellido DESC) as x2 
ORDER by apellido ASC
esta tercer parte agarra los 10 registros seleccionados en la consulta anterior y los ordena en orden ascendente (recordemos que estos ultimos 10 son los que nos interesan, pero estaban ordenados al revez), por tanto, los vuelvo a ordenar y son los que finalmente muestro...

todo parece funcionar de maravilla no?.. pero no...
si yo hago el select, pero en lugar de ordenar por un string, los ordeno por nrodoc (valor numerico), la consulta funciona bien, pero al hacerla por apellido repite valores y no logro entender por que..
Si alguien con la cabeza un poco menos quemada que que la mia me ayuda.. voy a estar eternamente agradecido...

Última edición por aquosoft fecha: 01-11-2006 a las 17:47:33.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Paginacion con DBGRID Coco_jac Varios 6 12-11-2005 18:46:50
Ayuda con paginacion warlordbl Impresión 2 04-11-2005 20:07:33
realizar paginacion alachaise PHP 1 14-04-2005 19:58:09
Paginación DataGrid en ASP.NET mamen .NET 2 28-09-2004 13:21:47
duda con paginacion con libro de visitas alachaise PHP 1 16-09-2004 01:33:42


La franja horaria es GMT +2. Ahora son las 00:08:55.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi