Tabla de historicos

01/11/2005 - 17:01 por Pablodegerli | Informe spam
Hola gente
Tengo la siguiente consulta
Para una tabla de historicos que es una registro identico a de una tabla al
momento de hacer una modificacion en esta ultima.El tema es como indico la
operacion que hizo ese cambio.
Tabla Historico
Id_Historico
Id_Operacion1 null
Id_Operacion2 null
Id_Operacion3 null
Id_Operacion4 null
o
Id_Historico
Id_Fk not null
TipoOperacion int
Tipo operacion indicaria alguna de las 4

En un caso de seleccion haria
Select Campos from Historico H
left join Operacion1 Op1 on H.Id_Operacion1 = Op1.Id_Operacion1
left join Operacion1 Op2 on H.Id_Operacion2 = Op1.Id_Operacion2
left join Operacion1 Op3 on H.Id_Operacion3 = Op1.Id_Operacion3
left join Operacion1 Op4 on H.Id_Operacion4 = Op1.Id_Operacion4
o
Select Campos from Historico H
left join Operacion1 Op1 on H.Id_Fk = Op1.Id_Operacion1 and
H.TipoOperacion = 1
left join Operacion1 Op2 on H.Id_Fk = Op1.Id_Operacion1 and
H.TipoOperacion = 2
left join Operacion1 Op3 on H.Id_Fk = Op1.Id_Operacion1 and
H.TipoOperacion = 3
left join Operacion1 Op4 on H.Id_Fk = Op1.Id_Operacion1 and
H.TipoOperacion = 4

Espero se entienda

Como siempre, gracias de antemano

Preguntas similare

Leer las respuestas

#1 Gustavo Larriera [MVP]
01/11/2005 - 17:46 | Informe spam
El diseño más puro desde el punto de vista de normalización, es el segundo
que propones, si pasas el tipo de operación a la tabla de operaciones.

Gustavo Larriera
Uruguay LatAm
Blog: http://sqljunkies.com/weblog/gux/
MVP profile: http://aspnet2.com/mvp.ashx?GustavoLarriera
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.
"Pablodegerli" wrote in message
news:
Hola gente
Tengo la siguiente consulta
Para una tabla de historicos que es una registro identico a de una tabla
al
momento de hacer una modificacion en esta ultima.El tema es como indico la
operacion que hizo ese cambio.
Tabla Historico
Id_Historico
Id_Operacion1 null
Id_Operacion2 null
Id_Operacion3 null
Id_Operacion4 null
o
Id_Historico
Id_Fk not null
TipoOperacion int
Tipo operacion indicaria alguna de las 4

En un caso de seleccion haria
Select Campos from Historico H
left join Operacion1 Op1 on H.Id_Operacion1 = Op1.Id_Operacion1
left join Operacion1 Op2 on H.Id_Operacion2 = Op1.Id_Operacion2
left join Operacion1 Op3 on H.Id_Operacion3 = Op1.Id_Operacion3
left join Operacion1 Op4 on H.Id_Operacion4 = Op1.Id_Operacion4
o
Select Campos from Historico H
left join Operacion1 Op1 on H.Id_Fk = Op1.Id_Operacion1 and
H.TipoOperacion = 1
left join Operacion1 Op2 on H.Id_Fk = Op1.Id_Operacion1 and
H.TipoOperacion = 2
left join Operacion1 Op3 on H.Id_Fk = Op1.Id_Operacion1 and
H.TipoOperacion = 3
left join Operacion1 Op4 on H.Id_Fk = Op1.Id_Operacion1 and
H.TipoOperacion = 4

Espero se entienda

Como siempre, gracias de antemano


Respuesta Responder a este mensaje
#2 Pablodegerli
01/11/2005 - 20:22 | Informe spam
Pero no hay una tabla de operaciones sino una tabla por cada tipo de
operacion
Para ser mas ejemplificador
Tabla de Pallet de productos
Pallet
Id_Pallet
Id_Bono_Recepcion (operacion por la que puede entrar)
Id_Ajuste (operacion por la que puede entrar o que
modifico el pallet)
Id_Intercompany (operacion por la que puede entrar)
Al modificar el pallet por un ajuste pasa el registro integro a la tabla
Pallet_Historico debiendo indicarse cual de las operaciones lo modifico por
lo que pensaba solo indicar el Id de la operacion que modifico el registro y
los demas en null.
Id_Historico Id_Pallet Id_Bono_Recepcion Id_Ajuste
Id_Intercompany Fecha_Alta_Historico
1 100 1548
null null 16/08/2005 10:40
2 100 null
84 null 20/08/2005 14:10
3 100 null
null 140 20/08/2005 15:04

Entonces al relacionar con un left a las tabla Bono_Recepcion, Ajuste e
Intercompany obtengo el listado cada movimiento
Con la segunda forma deberia hardcodear el tipo de operacion dado que no hay
una tabla con ello

"Gustavo Larriera [MVP]" escribió en el mensaje
news:
El diseño más puro desde el punto de vista de normalización, es el segundo
que propones, si pasas el tipo de operación a la tabla de operaciones.

Gustavo Larriera
Uruguay LatAm
Blog: http://sqljunkies.com/weblog/gux/
MVP profile: http://aspnet2.com/mvp.ashx?GustavoLarriera
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.
"Pablodegerli" wrote in message
news:
> Hola gente
> Tengo la siguiente consulta
> Para una tabla de historicos que es una registro identico a de una tabla
> al
> momento de hacer una modificacion en esta ultima.El tema es como indico


la
> operacion que hizo ese cambio.
> Tabla Historico
> Id_Historico
> Id_Operacion1 null
> Id_Operacion2 null
> Id_Operacion3 null
> Id_Operacion4 null
> o
> Id_Historico
> Id_Fk not null
> TipoOperacion int
> Tipo operacion indicaria alguna de las 4
>
> En un caso de seleccion haria
> Select Campos from Historico H
> left join Operacion1 Op1 on H.Id_Operacion1 = Op1.Id_Operacion1
> left join Operacion1 Op2 on H.Id_Operacion2 = Op1.Id_Operacion2
> left join Operacion1 Op3 on H.Id_Operacion3 = Op1.Id_Operacion3
> left join Operacion1 Op4 on H.Id_Operacion4 = Op1.Id_Operacion4
> o
> Select Campos from Historico H
> left join Operacion1 Op1 on H.Id_Fk = Op1.Id_Operacion1 and
> H.TipoOperacion = 1
> left join Operacion1 Op2 on H.Id_Fk = Op1.Id_Operacion1 and
> H.TipoOperacion = 2
> left join Operacion1 Op3 on H.Id_Fk = Op1.Id_Operacion1 and
> H.TipoOperacion = 3
> left join Operacion1 Op4 on H.Id_Fk = Op1.Id_Operacion1 and
> H.TipoOperacion = 4
>
> Espero se entienda
>
> Como siempre, gracias de antemano
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida