Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Se puede llamar un campo de dos maneras

Estas en el tema de Se puede llamar un campo de dos maneras en el foro de SQL Server en Foros del Web. Hola a todos. Tengo una pregunta se puede llamar un campo de dos maneras diferentes? El problema es que hay un programa que se encarga ...
  #1 (permalink)  
Antiguo 22/05/2012, 01:48
 
Fecha de Ingreso: octubre-2010
Mensajes: 3
Antigüedad: 13 años, 6 meses
Puntos: 0
Se puede llamar un campo de dos maneras

Hola a todos.

Tengo una pregunta se puede llamar un campo de dos maneras diferentes?

El problema es que hay un programa que se encarga de insertar cada día unos datos de unos dispositivos, el problema es que se están actualizando los dispositivos y lo que antes se llamaba fallo ahora se llama error, entonces cada dato se mete en un campo si es error en un campo llamado "error" y si es fallo en un campo llamado "fallo".

Tengo una página web que se encarga de realizar informes, mostrar gráficos etc de los fallos, entonces tendría que cambiar toda la página web para que contara tanto el campo "fallo" como el "error"
Se me ha ocurrido (creo que no es posible) que el campo fallo tuviera dos nombres.

Otra solución es cambiar el programa que se encarga de insertar todos los datos, pero no puedo ya que no es código abierto y no tengo acceso al código.

Y lo siguiente que se me ha ocurrido es hacer un triggers y todo lo que meta en error que lo meta automáticamente en fallo, pero esto me da un pelín de miedo ya que insertará unos 15000 datos en media hora, e igual me lo puede relentizar o darme algún error y quedarme sin los datos de ese con el riesgo que eso conlleva.

Se os ocurre a vosotros alguna solución más?

Un saludo y muchísimas gracias
  #2 (permalink)  
Antiguo 22/05/2012, 11:36
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Se puede llamar un campo de dos maneras

Pues el problema en si, no esta en SQL Server, mas bien en tu programa de tus dispositivos que cambian constantemente el nombre del campo y al hacer la inserccion, desafortunadamente lo que veo, es que hace referencia al nombre del campo.

La verdad, no se me ocurre nada, en todo caso, quien deberia darte una alternativa es la gente que te desarrolla en tus dispositivos.
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 22/05/2012, 18:48
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 6 meses
Puntos: 85
Respuesta: Se puede llamar un campo de dos maneras

Si no puedes modificar el código de la aplicación que inserta los datos, tienes dos opciones:

1. Como bien dices, crear un trigger que actualice el campo fallo cuando se inserta en el campo error y actualice el campo error cuando se inserta en el campo fallo, de esta manera la página web solo tiene que consultar un campo para realizar los informes.

Código:
create table t1 (id int, fallo varchar(10), error varchar(10))
go
create trigger trg1 on t1 after insert 
as
begin
 if (select error from inserted) is null
  update t1
  set t1.error = i.fallo
  from inserted i
  where t1.id = i.id
 else
  update t1
  set t1.fallo = i.error
  from inserted i
  where t1.id = i.id
end
go
insert into t1 values (1, 'fallo1', null)
insert into t1 values (1, null, 'error1')
go
select id, error from t1
go
2. Modificar la página web para que consulte el campo error o el campo fallo en función de los valores nulos.

Código:
create table t1 (id int, fallo varchar(10), error varchar(10))
go
insert into t1 values (1, 'fallo1', null)
insert into t1 values (1, null, 'error1')
go
select 
 id, 
 errores = case
        when fallo is not null then fallo
        when error is not null then error
        else 'sin datos'
       end
from t1
go
El rendimiento dependerá de varios factores, la primera opción te favorece si el campo t1.id es pk o unique y los reportes se hacen con funciones de agregado (ej: count(error) o group by error), y la segunda opción te favorece si la tabla no tiene una pk y los reportes no suman o agrupan la cantidad de errores.

Saludos

Etiquetas: campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:25.