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 22-04-2009
odrack odrack is offline
Miembro
 
Registrado: feb 2008
Posts: 167
Poder: 17
odrack Va por buen camino
Seleccion de ultimo registro con SQL

Un saludo a todos en el foro.

Tengo una aplicación en la que tengo que seleccionar el ultimo registro para obtener el siguiente, el problema que tengo es que la base contiene muchos registros y cada ves se hace mas lenta la busqueda, esto lo hago de la siguiente forma:

Código Delphi [-]
query1.close;
query1.sql.clear;
query1.sql.text:='Select referencia from ticket order by referencia';
query1.execSQL;
query1.open;
query1.last;

Con esto consigo obtener el ultimo registro por medio de delphi, mi pregunta es ¿Hay alguna forma de obtenerlo mediante la sentencia de SQL?
Responder Con Cita
  #2  
Antiguo 23-04-2009
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Prueba con la siguiente consulta y nos cuentas como te va:

Código SQL [-]
select referencia from ticket order by referencia rows 1
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #3  
Antiguo 23-04-2009
odrack odrack is offline
Miembro
 
Registrado: feb 2008
Posts: 167
Poder: 17
odrack Va por buen camino
al hacer la consulta me da un error en row 1

gracias jhonny
Responder Con Cita
  #4  
Antiguo 23-04-2009
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por odrack Ver Mensaje
al hacer la consulta me da un error en row 1

gracias jhonny
¿Que motor estas utilizando?
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #5  
Antiguo 23-04-2009
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 24
ContraVeneno Va por buen camino
¿la referencia es un número?

Código SQL [-]
Select Max(Referencia) From Ticket
__________________

Responder Con Cita
  #6  
Antiguo 23-04-2009
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.549
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Código Delphi [-]
query1.sql.text:='Select TOP 1 referencia from ticket order by referencia';
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #7  
Antiguo 23-04-2009
odrack odrack is offline
Miembro
 
Registrado: feb 2008
Posts: 167
Poder: 17
odrack Va por buen camino
Utilizo MySql, lo que quiero de esta consulta es que me devuelva todos los campos del ultimo registro, gracias por la respuesta ContraVeneno pero creo que debi mencionar que necesito recuperar todos los campos

GRacias
Responder Con Cita
  #8  
Antiguo 23-04-2009
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.549
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Código Delphi [-]
query1.sql.text:='Select TOP 1 * from ticket order by referencia';
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #9  
Antiguo 23-04-2009
odrack odrack is offline
Miembro
 
Registrado: feb 2008
Posts: 167
Poder: 17
odrack Va por buen camino
Gracias a todos por el apoyo, he resuelto el problema que tenia con esta sentencia:

Código SQL [-]
select * from ticket  where referencia = (select max(referencia) from ticket)
Responder Con Cita
  #10  
Antiguo 23-04-2009
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.549
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Código Delphi [-]
query1.sql.text:='Select TOP 1 * from ticket order by referencia DESC';

Debería ser lo mismo y consumir bastante menos que la anterior.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #11  
Antiguo 23-04-2009
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por odrack Ver Mensaje
Gracias a todos por el apoyo, he resuelto el problema que tenia con esta sentencia:

Código SQL [-]select * from ticket where referencia = (select max(referencia) from ticket)
Que bien, pero apuesto que si nos dijeras que motor utilizas, seguramente alguien encontraría una mejor solución.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #12  
Antiguo 23-04-2009
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.549
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por jhonny Ver Mensaje
si nos dijeras que motor utilizas
Cita:
Empezado por odrack Ver Mensaje
Utilizo MySql
Creo que lo dijo un poco más arriba...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #13  
Antiguo 23-04-2009
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 18
rgstuamigo Va por buen camino
Cita:
Empezado por odrack Ver Mensaje
Utilizo MySql, lo que quiero de esta consulta es que me devuelva todos los campos del ultimo registro, gracias por la respuesta ContraVeneno pero creo que debi mencionar que necesito recuperar todos los campos

GRacias
Código SQL [-]
select * from ticket order by referencia desc  Limit 1;
Pruebalo....
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #14  
Antiguo 23-04-2009
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por Neftali Ver Mensaje
Creo que lo dijo un poco más arriba...
, tendré que comenzar a ponerme gafas , pues si... la respuesta de rgstuamigo, debe funcionar correctamente.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #15  
Antiguo 23-04-2009
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 18
rgstuamigo Va por buen camino
Lightbulb

Cita:
Empezado por jhonny Ver Mensaje
, tendré que comenzar a ponerme gafas , pues si... la respuesta de rgstuamigo, debe funcionar correctamente.
Pues si amigo jhony segun entendi referencia debe ser la llave principal.
Ahora si quiero el primer registro tan solo cambio esto:
Código SQL [-]
select * from ticket order by referencia asc  Limit 1;
Aunque mysql ya lo ordena por defecto en forma asc.

Edito:Complementando tambien se podria hacer lo siguiente:
Si quiero el solo el segundo:
Código SQL [-]
select * from ticket   Limit 1,1;
Si quiero el tercero:
Código SQL [-]
select * from ticket   Limit 2,1;
Si quiero a partir del 5to. hacia el decimo;
Código SQL [-]
select * from ticket   Limit 4,5;
Etc,etc, Todo lo hace con la clausula Limit
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 23-04-2009 a las 01:29:25.
Responder Con Cita
  #16  
Antiguo 23-04-2009
odrack odrack is offline
Miembro
 
Registrado: feb 2008
Posts: 167
Poder: 17
odrack Va por buen camino
Gracias rgstuamigo, es verdad que consigo el mismo resultado y quiero entender que consume menos recursos y tiempo a diferencia de como lo habia puesto o estoy mal??
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
dbnavigator en ultimo registro eduardo360 Conexión con bases de datos 6 19-02-2008 17:27:31
No guarda el ultimo registro Tecnic2 Conexión con bases de datos 3 01-09-2004 20:31:23
Ultimo registro ander Firebird e Interbase 3 18-03-2004 15:52:02
Obtener el último registro juanchi Conexión con bases de datos 2 06-02-2004 02:52:21
Ir al último registro de una tabla fortran Tablas planas 6 05-09-2003 17:36:02


La franja horaria es GMT +2. Ahora son las 01:42:29.


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