Frage

Entschuldigung für den langen Frage Titel.

Ich denke, ich bin auf einem Verlierer in diesem Fall, aber auf dem Zufall.

Ist es möglich, die Berechnung eines berechneten Feldes in einer Tabelle zum Ergebnis einer Aggregatfunktion zu machen, die auf ein Feld in einer anderen Tabelle angewendet wird?

dh

Sie haben einen Tisch namens "Mug", dies hat ein Kind namens "Farbe" (was meinen britischen Kopf verletzt, aber der Verkäufer stammt aus den USA, was werden Sie tun?) Und das wiederum hat ein Kind namens " Größe'. Jede Tabelle hat ein Feld namens verkauft.

Die Größe. Soldet erhöht sich um 1 für jeden Becher einer bestimmten Farbe und Größe verkauft.

Sie möchten, dass Color.apfer ein Aggregat der Summengröße ist.

Sie möchten, dass Mug.sold ein Aggregat der Summefarbe ist.

Gibt es trotzdem, dass man Becher machen und färbt. Verkauft einfach selbst oder muss ich mich mit Triggern umgehen?

War es hilfreich?

Lösung

Sie können keine berechnete Spalte direkt auf eine andere Tabelle verweisen, sie können jedoch auf eine benutzerdefinierte Funktion verweisen. Hier ist ein Link zu einem Beispiel für die Implementierung einer solchen Lösung.

http://www.sqlservercentral.com/articles/user-defined+functions/complexcomputedcolumns/2397/

Andere Tipps

Nein, es ist nicht möglich, dies zu tun. Eine berechnete Spalte kann nur aus den Werten anderer Felder in derselben Zeile abgeleitet werden. Um ein Aggregat aus einer anderen Tabelle zu berechnen, müssen Sie eine Ansicht erstellen.

Wenn Ihre Bewerbung angezeigt muss, stellen Sie die folgenden Fragen auf:

  1. Ist es wirklich notwendig, dies in Echtzeit zu zeigen? Wenn ja warum? Wenn es wirklich erforderlich ist, dies zu tun, müssten Sie Trigger verwenden, um eine Tabelle zu aktualisieren. Dies Links zu einem kurzen Wikipedia -Artikel über Denormalisierung. Auslöser wirken sich auf die Schreibleistung auf Tabellenaktualisierungen aus und stützen sich auf die aktiven Auslöser.
  2. Wenn es nur für Berichtszwecke erforderlich ist, können Sie die Berechnung in einer Ansicht oder einem Bericht ausführen.
  3. Wenn es notwendig ist, häufige Ad-hoc-Berichte zu unterstützen, sind Sie möglicherweise in den Bereich eines Datenmart- und ETL-Prozesss über Nacht.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top