Pregunta

Lo siento por el título de la pregunta larga.

Supongo que estoy en un perdedor en este caso, pero en la posibilidad.

¿Es posible hacer que el cálculo de un campo calculado en una tabla sea el resultado de una función agregada aplicada a un campo en otra tabla?

es decir,

Tienes una mesa llamada 'taza', esta tiene un niño llamado 'color' (lo que hace que me duela la cabeza del Reino Unido pero el vendedor es de los EE. UU., ¿Qué vas a hacer?) y esto, a su vez, tiene un niño llamado 'tamaño'. Cada tabla tiene un campo llamado vendido.

El tamaño vendido se incrementa en 1 por cada taza de un color y tamaño particular vendido.

Desea que color.sold sea un agregado de SUM size.sold WHERE size.colorid = color.colorid

Quieres que mug.sold sea un agregado de SUM color.sold WHERE color.mugid = mug.mugid

¿Hay alguna forma de hacer que mug.sold y color.sold se resuelvan solos o voy a tener que andar con los desencadenantes?

¿Fue útil?

Solución

no puede tener una columna calculada que haga referencia directa a una tabla diferente, pero puede hacer que haga referencia a una función definida por el usuario. Aquí hay un enlace a un ejemplo de implementación de una solución como esta.

http://www.sqlservercentral.com/articles/User -Definido + funciones / complexcomputedcolumns / 2397 /

Otros consejos

No, no es posible hacer esto. Una columna calculada solo puede derivarse de los valores de otros campos en la misma fila. Para calcular un agregado de otra tabla, debe crear una vista.

Si su aplicación necesita mostrar las estadísticas, haga las siguientes preguntas:

  1. ¿Es realmente necesario mostrar esto en tiempo real? Si es así, ¿por qué? Si es realmente necesario hacer esto, entonces tendrías que usar disparadores para actualizar una tabla. Este se vincula a un breve artículo de wikipedia sobre la desnormalización. Los disparadores afectarán el rendimiento de escritura en las actualizaciones de la tabla y se basan en que los disparadores estén activos.
  2. Si solo es necesario a efectos de informes, puede realizar el cálculo en una vista o un informe.
  3. Si es necesario dar soporte a informes ad hoc frecuentes, es posible que se encuentre en los ámbitos de un data mart y un proceso ETL durante la noche.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top