SQL - Insertar Registros nuevos, un poco lioso

 
Vista:

Insertar Registros nuevos, un poco lioso

Publicado por JoseM (23 intervenciones) el 21/02/2007 17:08:30
Buenas, es un tanto lioso y me imagino que se podrá solucionar usando tablas temporales, pero si es posible prefiero evitar eso.

Tengo una tabla ya creada con X registros, digamos que 300, y el Id es manual.

Mediante una consulta quiero hacer una selección de ciertos campos y diferentes tablas para que el resultado lo inserte en la tabla con X registros.

Por lo que antes lo que tengo que hacer es un Max(Id) para saber el último id y sumarle 1 cuando haga un insert poniéndole el nuevo id.

Esa es mi idea, el problema es que si de la Select me sale como resultado más de un registro, no podré insertarlos con ese método ya que todos intentaría insertarlos aplicando al campo ID el mismo valor.

SELECT @ORDEN = max(E.ORDEN) FROM BBDD.DBO.TABLA1 E
WHERE E.TIPO = @TIPO
SET @ORDEN=@ORDEN+1

INSERT INTO bbdd.DBO.TABLATEMPORAL
(Fecha, tipo, orden, telefono, autopista, HoMedico, Hoats, fechaenlace, emprefac, colectivo )
SELECT FECHA=D.FECHA,,@TIPO,@ORDEN,X.TELEFONO,D.AUTOPISTA,D.HOMEDICO,D.HOATS,
D.FECHAENLACE,D.EMPREFAC,D.COLECTIVO
FROM BBDD.DBO.DIA D JOIN BBDD.DBO.EXT X ON D.FECHA = X.FECHA
AND D.MASREG=X.MASREG AND D.REGION=X.REGION
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

RE:Insertar Registros nuevos, un poco lioso

Publicado por Isaías (5072 intervenciones) el 21/02/2007 21:34:53
Sinceramente, sin tablas, temporales, dudo mucho como hacerlo.
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 Registros nuevos, un poco lioso

Publicado por Jose (23 intervenciones) el 22/02/2007 00:05:06
Jose, el primer query siempre te va arrojar 1 reg, por lo tanto no tendrias problemas, pero yo te recomiendo que utilizes variable tipo IDENTITY, te solucionaría mejor tu problem.

UserSQL.
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 Registros nuevos, un poco lioso

Publicado por JoseM (23 intervenciones) el 22/02/2007 08:00:04
El primer Query es sólo para saber cuál es el último registro de la tabla Destino y así sumarle 1 al Id que le tendré que asignar a los siguientes registros que quiera insertar.

Por cierto, en tu respuesta has puesto mi nombre y mi email???

Gracias isaías, mientras no tenga una solución de este tipo lo que estoy haciendo es preparar con tabla temporal.
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

RE:Insertar Registros nuevos, un poco lioso

Publicado por Liliana (426 intervenciones) el 22/02/2007 14:55:55
Hola,
Una sugerencia diferente por la posibilidad de insertar más de una fila a la vez, sería agregar estas filas con orden en cero y en un paso posterior numerarlas:

-- esta sería tu tabla con los nros. de orden en 0 para los últimos insertados
create table #test
(xx char(10), orden smallint)
insert #test select 'a', 1
insert #test select 'c', 2
insert #test select 'd', 3
insert #test select 'e', 0
insert #test select 'f', 0
insert #test select 'b', 0
go

-- este es el código para numerarlos
declare @orden smallInt
set @orden= (select max(orden) from #test)

UPDATE #test
SET @orden= orden = @orden+ 1
WHERE orden = 0

select * from #test
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 Registros nuevos, un poco lioso

Publicado por JoseM (23 intervenciones) el 23/02/2007 08:30:52
gracias liliana pero no es eso exactamente lo que intento hacer. O al menos no termino de ver que valga la solución que me has puesto.

tengo la Tabla Destino, dónde hay un campo ORDEN el cual va enumerado y con clave principal, no se pueden repetir los valores.

Después yo estoy recogiendo datos de diferentes tablas con una Select, y ese conjunto de resultados intento insertarlo en la tabla Destino metiendo cada registro con su numeración de Orden que le debe preceder.

Un saludo, y gracias de nuevo
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

RE:Insertar Registros nuevos, un poco lioso

Publicado por Liliana (426 intervenciones) el 23/02/2007 13:16:36
Hola José,
En la respuesta no tuve en cuenta que el número de orden forma parte de la clave, lo siento. Y no se me ocurre en este momento otra solución que la que se venía tratando, será en otra oportunidad.
Liliana.
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 Registros nuevos, un poco lioso

Publicado por JoseM (23 intervenciones) el 23/02/2007 15:23:01
La verdad es que se agradece el apoyo que se recibe, si doy con la solución os la pondré, de momento lo haré con una tabla temporal.
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