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

[SOLUCIONADO] diseño de vista

Estas en el tema de diseño de vista en el foro de SQL Server en Foros del Web. Hasta ahora tenía las siguientes tablas: Código: Tabla_Numeros: Id Numero Propiedad1 Propiedad2 Propiedad3 Propiedad4 Código: Id Tabla_Propiedad1 Propiedad1 Codigo1 Código: Id Tabla_Propiedad2 Propiedad2 Codigo2 Código: ...
  #1 (permalink)  
Antiguo 31/05/2015, 03:28
(Desactivado)
 
Fecha de Ingreso: marzo-2012
Mensajes: 366
Antigüedad: 12 años, 1 mes
Puntos: 31
diseño de vista

Hasta ahora tenía las siguientes tablas:
Código:
Tabla_Numeros:
Id
Numero
Propiedad1
Propiedad2
Propiedad3
Propiedad4
Código:
Id
Tabla_Propiedad1
Propiedad1
Codigo1
Código:
Id
Tabla_Propiedad2
Propiedad2
Codigo2
Código:
Id
Tabla_Propiedad3
Propiedad3
Codigo3
Código:
Id
Tabla_Propiedad4
Propiedad4
Codigo4
Y tenía la siguiente vista:
Código:
SELECT
Numero, Tabla_Propiedad1.Codigo1+Tabla_Propiedad2.Codigo2+Tabla_Propiedad3.Codigo3+Tabla_Propiedad4.Codigo4 AS Codigo
FROM
Tabla_Numeros INNER JOIN Tabla_Propiedad1 ON Tabla_Numeros.Propiedad1=Tabla_Propiedad1.Propiedad1 CROSS JOIN
Tabla_Propiedad2 CROSS JOIN
Tabla_Propiedad3 CROSS JOIN
Tabla_Propiedad4
WHERE
Tabla_Numeros.Propiedad2=Tabla_Propiedad1.Propiedad2 AND
Tabla_Numeros.Propiedad3=Tabla_Propiedad1.Propiedad3 AND
Tabla_Numeros.Propiedad4=Tabla_Propiedad1.Propiedad4
Y de esta manera consigo los siguientes campos en mi vista:
Código:
Numero
Codigo
Y mi vista sale correctamente.

Ahora quiero modificar un poco mi tabla Tabla_Numeros añadiendo nuevos campos, y también quiero modificar mi vista para sacar esos nuevos datos.

Mi nueva Tabla_Numeros es la siguente:
Código:
Tabla_Numeros:
Id
Numero
Propiedad1
Propiedad2
Propiedad3
Propiedad4
Propiedad1_Ideal
Propiedad2_Ideal
Propiedad3_Ideal
Propiedad4_Ideal
Resulta que el tipo de datos de Propiedad1_Ideal es el mismo que el de Propiedad1, y lo mismo con las otras PropiedadesX_Ideal

Mi intención es conseguir los siguientes campos en mi vista:
Código:
Numero
Codigo
Codigo_Ideal
Sacando los datos que se concadenan de Codigo_Ideal del mismo sitio que saco los códigos que se concatenan de Codigo.

Sin embargo, he probado varias alternativas y no me sale bien ninguna.

Ahora mismo se me ocurre hacer otras 4 tablas relacionales iguales a Tabla_PropiedadX pero llamadas Tabla_PropiedadX_Ideal... sin embargo, esto sería duplicar datos, ya que serían tablas exactamente iguales con los mismos registros. Por eso me gustaría poder utilizar las mismas tablas que tengo hasta ahora.

También he pensado en hacer una segunda vista que me de los siguientes campos:
Código:
Numero
Codigo_Ideal
y luego a la principal, insertarle este campo proveniente de la vista auxiliar. Sin embargo... no se me ocurre como.
Quizá utilizando el Id? Estoy atascado.

Última edición por Kritik; 31/05/2015 a las 03:48
  #2 (permalink)  
Antiguo 31/05/2015, 04:21
(Desactivado)
 
Fecha de Ingreso: marzo-2012
Mensajes: 366
Antigüedad: 12 años, 1 mes
Puntos: 31
Respuesta: diseño de vista

Acabo de caer en la cuenta: Para cada resultado de la SELECT de la vista, el campo Tabla_Propiedad1.Codigo1 tiene que valer el valor relacionado con Tabla_Numeros.Propiedad1 o con Tabla_Numeros.Propiedad2_Ideal... pero no puede valer los 2 valores a la vez. Por lo tanto en la parte de la select no puedo poner la misma concatenación (Tabla_Propiedad1.Codigo1+...) y pretender que me salga un resultado distinto, por distinto sitio que coja los datos (FROM) o por muchas condiciones distintas que ponga (WHERE).

Por lo tanto, creo que la única alternativa que me queda es hacerme una vista auxiliar... y en la principal sumarle esta columna. Sin embargo, por ahora sigo atascado en ello. Como juntarlas? Por el Id? No se me ocurre.
  #3 (permalink)  
Antiguo 31/05/2015, 07:47
(Desactivado)
 
Fecha de Ingreso: marzo-2012
Mensajes: 366
Antigüedad: 12 años, 1 mes
Puntos: 31
Respuesta: diseño de vista

Al final he utilizado una vista supletoria en el que he sacado el campo Codigo_Ideal... y luego lo he metido en mi vista principal igualando los campos Id en el WHERE. Y así ya tengo en mi vista principal los 3 campos deseados, número, Codigo y Codigo_Ideal.

Si a alguien se le ocurre otra solución más elegante, seguiré estando pendiente del hilo.

Etiquetas: campos, diseño, select, siguiente, tabla, vista
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 03:44.