SQL - insertar columna con identificadores

 
Vista:

insertar columna con identificadores

Publicado por maria jose (2 intervenciones) el 22/03/2010 17:42:54
hola, necesito saber como lo hago para agregar a una base de datos existente, una columna con identificadores.

Les expongo el caso a continuación:

Tengo una columna de rut (A...n), una de rut (B....n) y otra columna de tipo de productos (1...8), necesito ingresar una columna en la base de datos que me genere un ID por cada relación de rut a y rut b con un producto distinto.

Entiendo poco de programación y me urge realizar esta acción.... por favorrrrrrrrr.. se los agradeceré eternamente. Espero sus comentarios.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

RE:insertar columna con identificadores

Publicado por Leonardo Josue (1173 intervenciones) el 22/03/2010 22:50:28
Buenas tarde María José:

Vamos por partes, creo que hay varios detalles en tu post, así es que ayudanos a entender mejor qué es lo que necesitas:

En primer lugar, creo que cuando dices que quieres agregar una columna a una base de datos existente lo que en realidad quieres quieres decir que necesitas a agregar una columna a una TABLA que se encuentra en una BD. Si estoy en lo correcto en tu tabla tienes algo como esto

rut_a|rut_b|tipo_producto
1|1|1
1|1|2
1|1|3
1|2|1
2|1|1
2|1|2

y lo que pretendes de salida sería algo como esto
id|rut_a|rut_b|tipo_producto
1|1|1|1
2|1|1|2
3|1|1|3
4|1|2|1
5|2|1|1
6|2|1|2

No sé que manejador de BD estés utilizando, pero te paso el ejemplo de cómo se haría en SQL Server y si utilizas otro manejador sería cuestión de que busques la equivalencia.

alter table TuTabla ADD Id INT IDENTITY (1,1);

Con esta instrucción agregarás una columna al final de la tabla que es una enumeración, comenzando desde el 1 y agregando una unidad a siguiente registro.

Saludos y espero que la información te sea de ayuda.
Leo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:insertar columna con identificadores

Publicado por Maria Jose (2 intervenciones) el 23/03/2010 21:00:39
Muchas gracias Leo.

Te explico mejor a ver si me puedes guiar en lo que necesito.
Tienes mucha razón, como no se mucho de programacion me explique mal.
Utilizo el SQL SERVER 2000 para manejar la BD.

Lo que tengo en la tabla es algo parecido a lo que supusiste., solo que tiene mas columnas con mas datos pero que no son relevantes para lo que necesito.

rut_a|rut_b|tipo_producto/direccion/telefono/correo/fecha dev/etc/etc
1|1|1
1|1|2
1|1|3
1|2|1
2|1|1
2|1|2

Lo que me interesa es asignar un ID, por cada relación rut_a/rut_b distinta que exista en la tabla.
El problema que tengo es que muchas veces se repite esa relación pero para tipo_productos distintos. Por lo que una vez asignados los ID para rut_a/rut_b, tendré que agrupar los tipo_producto distintos bajo el mismo ID.

Agradecería nuevamente si me pudieras ayudar.
Maria José.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

RE:insertar columna con identificadores

Publicado por Leonardo Josue (1173 intervenciones) el 23/03/2010 22:59:31
Buenas Tardes nuevamente María José:

Mira, si entendí bien entonces tu tabla de salida debería quedar así:

ID|rut_a|rut_b|tipo_producto/direccion/telefono/correo/fecha dev/etc/etc
1|1|1|1
1|1|1|2
1|1|1|3
2|1|2|1
3|2|1|1
3|2|1|2

Es decir, los primeros 3 registros (rut_a = 1, rut_b = 1) deberían quedar con el mismo ID, así mismo los últimos dos registros (rut_a = 3, rut_b = 2) tambien deberían quedar con el mismo ID. si estoy en lo correcto entonces creo que podrías hacer los siguiente:

1. Agrega la columna ID a tu tabla si no existe:

alter table TuTabla ADD Id INT;

2. Crea una tabla temporal (#Temp) como sigue:

select IDENTITY(int, 1, 1) AS ID, a.* into #Temp from
(select distinct rut_a, rut_b from TuTabla) a

Esta tabla temporal contendrá las diferentes combinaciones de rut_a y rut_b y les asignará un ID unico. la tabla se almacena en memoria y se eliminará una vez que termines tu sesión de SQL Server.

3. Actualiza tu Tabla con la información de la tabla Temporal así:

update
TuTabla set TuTabla.ID = #Temp.ID
from
TuTabla inner join #Temp on #Temp.rut_a = TuTabla.rut_a and #Temp.rut_b = TuTabla.rut_b

Recuerda respaldar tu información antes de realizar cualquier actualización por aquello de las dudas.

Saludos y espero que la información te sea de ayuda
Leo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar