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 28-01-2021
pablocarlos pablocarlos is offline
Miembro
 
Registrado: ene 2021
Posts: 56
Poder: 4
pablocarlos Va por buen camino
Obtener último registro en sql por un campo

Saludos! Deseo que me ilustren de cómo obtener el último registro de una tablas en sql que no sea por el id, deberia encontrarlo por un campo determinado.
Por ejemplo:

"SELECT max(Numero) FROM tiket Where Numero <> 0 OR Numero < 1000000 and transferir = 'N'"


Donde el campo numero se le asigna +1 en cada insert y al llegar al 1000000 deberia (por código) comenzar en 1 nuevamente (esto solicionado con un if donde verifica que si el numero es 1000000, numero es 1), "transferir" es otro campo que condiciono en la busqueda sólo "N".

El tema pasa que el "max" encuentra el valor máximo y no el ultimo registro. Espero ser lo más claro posible. Se agradece!
Responder Con Cita
  #2  
Antiguo 28-01-2021
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Exactamente qué quieres decir con "último registro", ten en cuenta que en SQL no hay "último", "primero", ni nada de eso, sino que depende del orden, consulta realizada, etc.
Responder Con Cita
  #3  
Antiguo 28-01-2021
pablocarlos pablocarlos is offline
Miembro
 
Registrado: ene 2021
Posts: 56
Poder: 4
pablocarlos Va por buen camino
Último

Cita:
Empezado por Casimiro Notevi Ver Mensaje
Exactamente qué quieres decir con "último registro", ten en cuenta que en SQL no hay "último", "primero", ni nada de eso, sino que depende del orden, consulta realizada, etc.

Gracias por responder, cuando digo último registro quiero decir el último en la tabla que reuna esas condiciones en el campo transferir que sea "N" y el número que sea distinto a 0 o no igual a 1000000.
Ejemplo
Tengo una tabla tickets con los campos id, numero, transferible, fecha...
el id es autoincrementable, numero es integer (a este se le suma 1 con respecto al anterior fila registro) transferible puede tener N, S, D pero me interesa sólo que busque los N, los demás no hacen a la búsqueda. Necesito saber el número (valor) del último para sumarle 1 al nuevo o empezar desde 1. La consulta que realizo me muesta el el más alto (MAX). No necesito consultar por id.
Trate de ser claro pero a la hora de explicarlo quiza resulte confuso por que yo entiendo lo que quiero
(¿por qué al enviar mensaje el foro dice "aún no tienes permitido enviar enlaces... si no lo hice?
Responder Con Cita
  #4  
Antiguo 28-01-2021
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Usa entonces first 1 y el orden desc
Ejemplo:
Código SQL [-]
select first 1 codigo, nombre
from tbPersonas
order by nombre
desc

En algunas bases de datos es "limit 1" en lugar de first 1, algo asi:
Código SQL [-]
select codigo, nombre
from tbPersonas
limit 1
order by nombre
desc
Responder Con Cita
  #5  
Antiguo 28-01-2021
pablocarlos pablocarlos is offline
Miembro
 
Registrado: ene 2021
Posts: 56
Poder: 4
pablocarlos Va por buen camino
Error

Gracias por responder, ese select que haces devuelve todas las filas pero mostrando 2 campos.


Si ordeno Select * from tabla veré todos los registros de esta tablas ordenados por id en forma asc, lo que no logro realizar es que me muestre el último registro insertado con la condición que en su campo transferir sea "n" y en el campo Número sea distinto a 0 y no muestre el que tenga 1000000 como valor del campo número.
Pido disculpas por quitar su tiempo, gracias.
Responder Con Cita
  #6  
Antiguo 28-01-2021
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 913
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Se me ocurre que podrías realizar un select anidado...

Código SQL [-]
SELECT A.Numero, A.* ....
FROM Ticket A
         INNER JOIN 
        (SELECT max(Ticket.Numero) as Numero
         FROM Ticket 
         Where Ticket.Numero <> 0 OR Ticket.Numero < 1000000 and Ticket.Transferir = 'N'")  B 
        ON (A.Numero=B.Numero)
Haber que resulta de esto...
Responder Con Cita
  #7  
Antiguo 28-01-2021
pablocarlos pablocarlos is offline
Miembro
 
Registrado: ene 2021
Posts: 56
Poder: 4
pablocarlos Va por buen camino
Solución

Código SQL [-]
Select id_tiquet, Numero from tiket Where Numero <> 0  and transferir = 'N'
order by id_tiquet DESC LIMIT 1


Gracias Casimiro, Cloaysa por su tiempo y quemar neuronas por mi problema. Les comento que llegó la luz a mis ojos y con el select más arriba logré lo que necesitaba, el tema del 1000000 lo arreglé por código dentro de la apps... (no critiquen mi "tiquet", se que se escribe tickets) Saludos enorme!

Última edición por pablocarlos fecha: 28-01-2021 a las 20:25:50. Razón: faltas ortográficas
Responder Con Cita
  #8  
Antiguo 28-01-2021
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por pablocarlos Ver Mensaje
Gracias por responder, ese select que haces devuelve todas las filas pero mostrando 2 campos.
Es solamente un ejemplo para que lo adaptes a tu tabla y campos.
Responder Con Cita
  #9  
Antiguo 28-01-2021
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por pablocarlos Ver Mensaje
Saludos enorme!
Responder Con Cita
  #10  
Antiguo 28-01-2021
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 913
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Que bueno que lograste dar con la solución, maneras hay muchas solo queda buscar...

Para la próxima podrías indicar cual es el gestor de base de datos...

Esto debido a que dependiendo del gestor de BD, las sentencias pueden tener variaciones...
Responder Con Cita
  #11  
Antiguo 29-01-2021
pablocarlos pablocarlos is offline
Miembro
 
Registrado: ene 2021
Posts: 56
Poder: 4
pablocarlos Va por buen camino
Cita:
Empezado por cloayza Ver Mensaje

Esto debido a que dependiendo del gestor de BD, las sentencias pueden tener variaciones...
Es verdad, pido disculpas. el gesto es mysql. Gracias
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 ultimo registro ingresado maxi915 Tablas planas 13 29-06-2014 12:02:29
Obtener el ultimo registro toni.vi SQL 2 09-12-2009 13:02:58
como obtener el ultimo registro gustavoh .NET 2 17-07-2006 14:29:07
Obtener el último registro insertado mutant09 SQL 3 04-05-2004 20:59:21
Obtener el último registro juanchi Conexión con bases de datos 2 06-02-2004 01:52:21


La franja horaria es GMT +2. Ahora son las 00:53:23.


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