Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-09-2010
rfernandez rfernandez is offline
Miembro
 
Registrado: ago 2003
Posts: 64
Poder: 21
rfernandez Va por buen camino
select con columna autoincrental

Buenas a todos y todas,

Necesito hacer una select donde la primera columna sea un autoincremental que empieze en 1 y continue en incrementos de 1.
Lo que necesito es tener una columna que me diga el numero de fila que representa esa fila.

Algo asi

select contador, codigo from articulos order by codigo

resultado -->

contado codigo
1 art1
2 art10
3 bec23
......

Gracias
Responder Con Cita
  #2  
Antiguo 17-09-2010
ARPE ARPE is offline
Miembro
 
Registrado: oct 2003
Posts: 11
Poder: 0
ARPE Va por buen camino
Hola, se me ocurre una chapucilla. Genérate un generador llamado por ejemplo contador, antes de la consulta dices:
set generator contador to 0;
y en la consulta dices:
Select gen_id(contador, 1), codigo
from articulos
order by codigo;

(de todas formas el "recno" en algún tipo de tabla también funciona)

Saludos
Responder Con Cita
  #3  
Antiguo 17-09-2010
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola rfernandez, prueba con esta consulta:

Código SQL [-]
Select ((Select  Count(*) From Tabla t1 Where t1.codigo < t.codigo) + 1) as contador, t.codigo
From Tabla t
Where ................
Order By t.codigo

tu campo codigo no debe tener repetidos y mejor si colocas un filtro en el where si tienes muchos registros.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #4  
Antiguo 20-09-2010
rfernandez rfernandez is offline
Miembro
 
Registrado: ago 2003
Posts: 64
Poder: 21
rfernandez Va por buen camino
Gracias a los dos, haré pruebas.
La segunda opción me da que desde el punto de rendimiento va a ser muy pesada de ejecutar para consultas con muchos datos.

Gracias nuevamente.
Responder Con Cita
  #5  
Antiguo 21-09-2010
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
La otra solución es crear un procedimiento almacenado, con un bucle FOR SELECT, e ir incrementando un contador en cada iteración del bucle.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #6  
Antiguo 23-09-2010
Delfino Delfino is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 974
Poder: 21
Delfino Va por buen camino
Si vas a mostrar los datos mediante Delphi puedes crear un campo calculado y le asignas el RecNo del Dataset asociado..
__________________
¿Microsoft? No, gracias..
Responder Con Cita
  #7  
Antiguo 23-09-2010
rfernandez rfernandez is offline
Miembro
 
Registrado: ago 2003
Posts: 64
Poder: 21
rfernandez Va por buen camino
El Recno, como mínimo con TQuery de BDE contra Firebird no funciona.
Sobre el proceso almacenado es una opción pero tengo esta necesidad para multiples consultas y si tengo que hacer un SP para cada una es un latazo.

me estoy planteando cargar un TClientDataSet a traves de la consulta y hay hacer el numerador.

Gracias a todos.
Responder Con Cita
  #8  
Antiguo 23-09-2010
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
Cita:
Empezado por rfernandez Ver Mensaje
El Recno, como mínimo con TQuery de BDE contra Firebird no funciona.
Sobre el proceso almacenado es una opción pero tengo esta necesidad para multiples consultas y si tengo que hacer un SP para cada una es un latazo.

me estoy planteando cargar un TClientDataSet a traves de la consulta y hay hacer el numerador.

Gracias a todos.
Si como dices, conectas tu TQuery a un TClientDataset vía un TDatasetProvider, entonces podrás utilizar el RecNo del ClientDataset, que funciona perfectamente.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #9  
Antiguo 07-10-2010
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
Resp

Haste y procedimiento almacenado.

Y si te preocupa que no puedas lanzar intrucciones de insercion actualizacion u elimincacion sobre dicho procedimiento. Complemeta el procedimiento con una vista actualizable.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
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
Hacer que una columna de un DbGrid aparezca distinta según valor Aprendiendo OOP 11 30-11-2018 14:47:20
Poner una columna de un DBGrid como columna Fija rgstuamigo OOP 4 04-03-2009 21:54:38
Ordenar por una columna resultado de otro select salvica SQL 3 10-01-2008 06:26:02
Problema conuna consulta select...not in (select ...) VRO Firebird e Interbase 2 11-08-2005 08:56:35
resultado en nodos (cxGrid) solo me aperese el primero del select, relacion columna = sakuragi OOP 1 29-07-2005 17:17:55


La franja horaria es GMT +2. Ahora son las 18:12:03.


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