Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   ayuda SQL (https://www.clubdelphi.com/foros/showthread.php?t=62440)

cmm07 23-12-2008 19:46:45

ayuda SQL
 
Hola, rapidito, lo que deseo hacer es que SQL SERVER me devuelva un valor predeterminado:

ejemplo:

Tabla EJMEPLO, Campo NUMERO:

Numero
-------
1u
2a
3d
4f
5g

coloco una intsruccion

Select........AQUI NECESITO SU AYUDA, No se que colocarle

y el rsultado que quiero que me devuelva por ejemplo la fila 3, quedaría:

Numero
-------
3d

ahora quiero que me devuelva el valor de la columna 2, quedaría:

Numero
-------
2a

COmo puedo hacer eso, osea que me devuelva el valor de un campo de una fila predeterminada en intruccion SQL

grax

Kipow 23-12-2008 20:12:05

Podrias probar

Código SQL [-]
select numero
from ejemplo
where ROW_NUMBER() = :numerodefila

Caral 23-12-2008 20:12:26

Hola
Yo creo que tendrias que tener un campo autoincrementable y basarte en ese campo.
Saludos

ContraVeneno 23-12-2008 22:45:07

Código SQL [-]
Select Numero
From Ejemplo
Where SubString(Numero,1,1) = 2

pero lo mejor es como ya dijeron, tener un campo autoincrementable.

cmm07 24-12-2008 00:37:16

Hola, gracias por vuestra ayuda, pero lamentablemente por ahora no podré probar el codigo, ya que desintale SQL 2005 para instalar SQL 2008, y la verdad no me gusta usar un campo AutoIncrease, por que cuando por ejemplo se crean 4 registros el autoincrementador queda, 1,2,3,4 luego cuando se eliminan, al volver a crear nuevos datos se crean desde ya como 5,6,7,8, no se si me explico......

bueno gracias..

54LU2

Caral 24-12-2008 00:41:53

Hola
Cita:

Empezado por cmm07 (Mensaje 332076)
......... por que cuando por ejemplo se crean 4 registros el autoincrementador queda, 1,2,3,4 luego cuando se eliminan, al volver a crear nuevos datos se crean desde ya como 5,6,7,8, ........

Si y no.
Todo depende, siempre depende.
Saludos

cmm07 24-12-2008 00:44:49

gracias, pero como les dije estoy descargando el SQL 2008, y la 2005 ya la desintale XD, gracias, pronto comentaré como me fue, muchas gracias, de verdad agradezco todo lo que hacen por mi, por intentar ayudarme.gracias

54LU2

Delphius 24-12-2008 02:23:47

Cita:

Empezado por cmm07 (Mensaje 332076)
Hola, gracias por vuestra ayuda, pero lamentablemente por ahora no podré probar el codigo, ya que desintale SQL 2005 para instalar SQL 2008, y la verdad no me gusta usar un campo AutoIncrease, por que cuando por ejemplo se crean 4 registros el autoincrementador queda, 1,2,3,4 luego cuando se eliminan, al volver a crear nuevos datos se crean desde ya como 5,6,7,8, no se si me explico......

bueno gracias..

54LU2

¿Y cual es el problema? Digo, para eso es el autoincremental. Para no repetirse nunca: tener valores únicos.

Por otro lado, no recuerdo del todo Microsoft SQL Server pero creo que el SQL de Kipow y el de ContraVeneno debería funcionar.
Una preguntita ¿Este hilo está relacionado de alguna manera con el otro?

Saludos,

cmm07 24-12-2008 03:01:33

Hola delphius, pues gracias por tu comentario, ese es el problema de autoincrease que hace valores unicos que al eliminarlos ya no los repite nunca más, por eso mismo, no me funcionaria en lo que deseo hacer, respecto a lo del otro post, pues si, esta algo relacionado para crear un procedimiento pero solo para SQL, creo que me falta solo esto, el otro post lo escribí ántes de que se me ocurriese esta idea y la verdad no supe como eliminarlo, en todo caso igual sirve para ver si hay intrucciones mas optimizadas

54LU2

cmm07 24-12-2008 11:59:46

Cita:

Empezado por Kipow (Mensaje 332033)
Podrias probar

Código SQL [-]select numero from ejemplo where ROW_NUMBER() = :numerodefila

amigo no me funciona, me dice "Mens. 1035, Nivel 15, Estado 10, Línea 4
Sintaxis incorrecta cerca de 'ROW_NUMBER'; se esperaba 'OVER'."

asi la estoy utilizando:

Código SQL [-]
SELECT [Nombre]
  FROM Ejemplo.dbo.Ejemplo
  WHERE (ROW_NUMBER() = 2)

que puede ser??

gracias.

Kipow 24-12-2008 18:27:41

proba con eso, no uso SQL SERVER pero eso es lo que he encontrado :)

link

Código SQL [-]
SELECT [Nombre]
  FROM Ejemplo.dbo.Ejemplo
  WHERE (ROW_NUMBER() over(ORDER BY [Nombre] ASC) = 2)

cmm07 26-12-2008 18:28:25

losiento amigo, pero ahora me marca el siguiente error:

Mens. 4108, Nivel 15, Estado 1, Línea 3
Las funciones de división de particiones sólo pueden aparecer en las cláusulas SELECT u ORDER BY.

PD: No he podido aún descubrir el problema :(


La franja horaria es GMT +2. Ahora son las 09:43:18.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi