Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Consulta de registros saltados (https://www.clubdelphi.com/foros/showthread.php?t=76079)

newtron 07-10-2011 11:40:46

Consulta de registros saltados
 
Hola, tengo una pregunta a ver si esto es posible con una consulta sql.

Tengo una tabla de facturas con su código correlativo:

A-000001
A-000002
A-000003

Hasta ahí todo bien pero si se me queda un número suelto, por ejemplo:

A-000001
A-000002
A-000003
A-000005

¿Hay forma de saber con una consulta sql que la factura que me falta es la 000004 o es una consulta galáctica?

Saludos

ecfisa 07-10-2011 13:20:25

Hola newtron.

Esta consulta (en Firebird) te devuelve el primer hueco entre codigos tomando como referencia el código que pusiste:
Código SQL [-]
SELECT FIRST 1 CAST(SUBSTRING(T1.CADENA FROM 3 FOR 6) AS INTEGER)+1 AS FALTA
FROM TABLA T1
WHERE NOT EXISTS(SELECT 1 FROM TABLA T2
                 WHERE(CAST(SUBSTRING(T2.CADENA FROM 3 FOR 6)AS INTEGER) =
                       CAST(SUBSTRING(T1.CADENA FROM 3 FOR 6)AS INTEGER)+1))
No sé si será eficiente, SQL no es mi punto fuerte... (y lo demás tampoco :( :D)

Un saludo. :)

newtron 07-10-2011 13:40:42

Cita:

Empezado por ecfisa (Mensaje 414852)
No sé si será eficiente, SQL no es mi punto fuerte... (y lo demás tampoco :( :D)

No seas tan humilde mi amigo, que me cuenta nuestra común esposa que eres un pantera. :D

Mala suerte, mi base de datos no se traga el SELECT FIRST :(

ecfisa 07-10-2011 13:44:05

Cita:

No seas tan humilde mi amigo, que me cuenta nuestra común esposa que eres un pantera.
Eso debe ser cierto ya que me suele usar de alfombra... :)

Ahora volviendo al tema, que motor de BD estás trabajando ?

newtron 07-10-2011 13:49:36

Cita:

Empezado por ecfisa (Mensaje 414854)
Ahora volviendo al tema, que motor de BD estás trabajando ?

No creo que lo conozcas, se llama elevatedb, pero lo que me escama es que se supone que es compatible SQL 2003 y no veo en la documentación que no acepte esa instrucción en particular.

newtron 07-10-2011 14:00:43

Solucionado.

He quitado el SELECT FIRST y ha ido estupendamente.

Gracias ecfisa, anótate otra que te debo (el libro ya tiene que ser grande).

Gracias y un abrazo.

Edito: La cantidad de cosas que se pierde uno con esto de no saber SQL.... ains....

ecfisa 07-10-2011 14:03:23

Hola.

Probá con estas dos:
.- SELECT TOP 1
.- SET ROWCOUNT 1
.- Revisá esta página (Limiting result rows)

En esta está el uso de substrings y en esta hay algo sobre cast


Saludos y que haya suerte ;)


La franja horaria es GMT +2. Ahora son las 19:59:16.

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