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 12-09-2008
jangel_ramirezm jangel_ramirezm is offline
Miembro
 
Registrado: ago 2007
Ubicación: León Gto. Mex.
Posts: 39
Poder: 0
jangel_ramirezm Va por buen camino
consulta sql traer todos los registros menos los primeros 8

hola a todos buenos dias por acá y antes que nada gracias por tomarse el tiempo de leer este hilo

pués resulta que estoy imprimiendo una tarjeta de abonos dende por la pate de adelante se regsitran los datos del cliente y de la cuenta a demás de los primeros 8 abonos y en la parte de atrás se registran los seiguientes abonos esto no habia dado problema hasta hoy que dijeron que la tarjeta no daba los datos correctos ya que la consulta sql que hago para traer los ultimos abonos repite unos datos y omite otros
este es el código para los primeros 8 registros :

Código SQL [-]
select top 8 ABONOS.*, isnull (OTR_DESC,0) as DESCUENTO,
           isnull (CARGOS,0) as CARGOS , isnull (ENGANCHE,0) as  ENGANCHE
from ABONOS left outer join V_VENTAS_CLIENTES
on ABONOS.NUM_ALM = V_VENTAS_CLIENTES.NUM_ALM
and ABONOS.NUM_CUENTA = V_VENTAS_CLIENTES.NUM_CUENTA
where ABONOS.NUM_ALM = 'BR' and ABONOS.NUM_CUENTA = 6742
order by ABONOS.FECHA asc

y este para los siguientes registros :
Código SQL [-]
select * 
from ABONOS
where NUM_ALM = 'BR' and NUM_CUENTA = 6742
and saldo_act not in ( select TOP 8 saldo_act
     from ABONOS
     where NUM_ALM = 'BR' and NUM_CUENTA = 6742 )
order by FECHA asc

pongo cada cansulta por separado en un tquery para que estos le pasen los datos a la página correspondiente del reporte al reporte

si alguien pudiera decirme si existe una función sql para hacer esto sin necesidad de subconsultas se lo agadeceria mucho.

saludos.
Responder Con Cita
  #2  
Antiguo 12-09-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola jangel_ramirezm, no dices que BD usas, pero en Firebird, se tiene skip para que salte la cantidad que le indicas.

Código SQL [-]
 select skip 8  * from tabla

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #3  
Antiguo 12-09-2008
jangel_ramirezm jangel_ramirezm is offline
Miembro
 
Registrado: ago 2007
Ubicación: León Gto. Mex.
Posts: 39
Poder: 0
jangel_ramirezm Va por buen camino
hola de nuevo

una disculpa estoy utilizando sql server 2000
y probé la función skip

y quedó asi
Código SQL [-]
select skip 8 ABONOS.*
from ABONOS left outer join V_VENTAS_CLIENTES
on ABONOS.NUM_ALM = V_VENTAS_CLIENTES.NUM_ALM
and ABONOS.NUM_CUENTA = V_VENTAS_CLIENTES.NUM_CUENTA
where ABONOS.NUM_ALM = 'BR' and ABONOS.NUM_CUENTA = 6742
order by ABONOS.FECHA asc

solo que marca que hay un error de sintaxis cerca de 8

saludos
Responder Con Cita
  #4  
Antiguo 12-09-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola de nuevo, acabo de hacer la prueba, parece que SQL Server no tiene esa función, la otra forma que se me ocurre es utilizando subconsultas como ya lo estas haciendo. Esperemos que venga alguien que maneje SQL Server y te indique alguna función equivalente.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #5  
Antiguo 12-09-2008
jangel_ramirezm jangel_ramirezm is offline
Miembro
 
Registrado: ago 2007
Ubicación: León Gto. Mex.
Posts: 39
Poder: 0
jangel_ramirezm Va por buen camino
hola de nuevo
yo tambien estuve probado la función y creo que no sirve para esto que estoy haciendo ya que la marca como palabra reservada tal vez sirva para otras cosas
lo bueno esque modifiqué la subconsulta y en las mini pruebas que realicé ya trajo los datos como se esperaba; espero que no sea solo en el caso de esa cuenta.
la consulta quedó muy parecida solo que le agregué el order by dentro de la subconsulta y quedó así

Código SQL [-]
select * 
from ABONOS
where NUM_ALM = 'BR' and NUM_CUENTA = 6742
and saldo_act not in ( select TOP 8 saldo_act
     from ABONOS
     where NUM_ALM = 'BR' and NUM_CUENTA = 6742  order by fecha asc)
order by FECHA asc

muchas gracias por las respuestas

saludos.
Responder Con Cita
  #6  
Antiguo 12-09-2008
ninguno ninguno is offline
Miembro
 
Registrado: sep 2008
Posts: 45
Poder: 0
ninguno Va por buen camino
Hola

No uso SQL Server, pero imagino que un procedimiento almacenado será más rápido que no esa subconsulta. Es decir, hacer la consulta que te retorne todos los registros pero sólo "envías" a partir del octavo resultado (que puedes controlar con una sencilla variable local).

Digo que imagino que será más rápido e eficiente dado que por cada registro estás haciendo la subconsulta, con el SP no hay subconsulta.
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
Obtener los 30 primeros registros de un ClientDataSet David Conexión con bases de datos 7 21-04-2008 17:47:44
Volver a ver todos los registros Pechelo SQL 6 10-07-2007 21:22:31
Traer Registros de SQL en lotes sanfer1ec SQL 3 11-04-2007 19:22:39
Seleccionar todos los registros de una tabla menos 2 FunBit MySQL 4 13-07-2005 17:06:31
Recuperar todos los registros en consulta lafirma Conexión con bases de datos 9 07-08-2003 22:05:33


La franja horaria es GMT +2. Ahora son las 12:50:30.


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