4

Désolé pour le titre de la question longue.Résultat de la colonne calculée SQL Server 2005 à partir de l'agrégation de la valeur d'un autre champ de table

Je suppose que je suis sur un perdant sur celui-ci mais sur le hasard.

Est-il possible de faire du calcul d'un champ calculé dans une table le résultat d'une fonction agrégée appliquée à un champ dans une autre table.

-à-dire

Vous avez une table appelée « tasse », ce qui a un enfant appelé « couleur » (ce qui rend ma tête au Royaume-Uni blessé, mais le vendeur est des États-Unis, ce que vous allez faire?) Et ce , à son tour, a un enfant appelé «taille». Chaque table a un champ appelé vendu.

La taille.sold augmente de 1 pour chaque tasse d'une couleur et d'une taille particulières vendues.

Vous voulez color.sold être un agrégat de SUM size.sold OÙ size.colorid = color.colorid

Vous voulez mug.sold soit un total de SUM color.sold OÙ color.mugid = tasse .mugid

Y a-t-il moyen de faire mug.sold et color.sold se débrouiller tout seuls ou est-ce que je vais devoir me balader avec des triggers?

+0

Je travaille pour un agent de billetterie où le nombre de temps réel du dernier billet imprimé est essentiel et les billets viennent dans les types et les types viennent dans les prix. La numérotation des billets par spectacle, type et prix pourrait être nécessaire à tout moment. –

Répondre

2

Non, ce n'est pas possible. Une colonne calculée ne peut être dérivée qu'à partir des valeurs des autres champs de la même ligne. Pour calculer un agrégat d'une autre table, vous devez créer une vue.

Si votre application a besoin de montrer les statistiques posent les questions suivantes:

  1. Est-il vraiment nécessaire de montrer en temps réel? Si oui, pourquoi? Si cela est vraiment nécessaire, vous devrez utiliser des déclencheurs pour mettre à jour une table. This liens vers un court article de Wikipédia sur la dénormalisation. Les déclencheurs affecteront les performances d'écriture sur les mises à jour de table et dépendront des déclencheurs actifs.
  2. Si cela n'est nécessaire qu'à des fins de génération de rapports, vous pouvez effectuer le calcul dans une vue ou un rapport.
  3. S'il est nécessaire de prendre en charge des rapports ad-hoc fréquents, vous pouvez être dans les domaines d'un magasin de données et du processus ETL durant la nuit.