PDA

Ver la Versión Completa : Obtener último registro en sql por un campo


pablocarlos
28-01-2021, 17:21:03
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!

Casimiro Notevi
28-01-2021, 18:00:55
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.

pablocarlos
28-01-2021, 18:47:48
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?

Casimiro Notevi
28-01-2021, 19:26:27
Usa entonces first 1 y el orden desc
Ejemplo:
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:
select codigo, nombre
from tbPersonas
limit 1
order by nombre
desc

pablocarlos
28-01-2021, 19:46:08
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.

cloayza
28-01-2021, 20:13:24
Se me ocurre que podrías realizar un select anidado...


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...:D

pablocarlos
28-01-2021, 20:25:04
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!

Casimiro Notevi
28-01-2021, 20:30:51
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.

Casimiro Notevi
28-01-2021, 20:31:16
Saludos enorme!^\||/^\||/^\||/

cloayza
28-01-2021, 20:56:54
Que bueno que lograste dar con la solución, maneras hay muchas solo queda buscar...:D

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...

pablocarlos
29-01-2021, 00:37:43
Esto debido a que dependiendo del gestor de BD, las sentencias pueden tener variaciones...
Es verdad, pido disculpas. el gesto es mysql. Gracias