Domanda

Ci scusiamo per il lungo titolo della domanda.

Immagino di essere un perdente in questo, ma fuori possibilità.

È possibile rendere il calcolo di un campo calcolato in una tabella il risultato di una funzione aggregata applicata a un campo in un'altra tabella.

cioè.

Hai un tavolo chiamato 'mug', questo ha un bambino chiamato 'color' (che mi fa male la testa nel Regno Unito ma il venditore è dagli Stati Uniti, che cosa hai intenzione di fare?) e questo, a sua volta, ha un bambino chiamato 'dimensione'. Ogni tabella ha un campo chiamato venduto.

Il size.sold aumenta di 1 per ogni tazza di un particolare colore e dimensione venduti.

Vuoi che color.sold sia un aggregato di SUM size.sold DOVE size.colorid = color.colorid

Vuoi che mug.sold sia un aggregato di SUM color.sold DOVE color.mugid = mug.mugid

Esiste un modo per creare mug.sold e color.sold semplicemente allenarsi da soli o dovrò andare in giro con i trigger?

È stato utile?

Soluzione

non puoi avere una colonna calcolata che fa riferimento direttamente a una tabella diversa, ma puoi farla fare riferimento a una funzione definita dall'utente. ecco un link ad un esempio di implementazione di una soluzione come questa.

http://www.sqlservercentral.com/articles/User -Defined + funzioni / complexcomputedcolumns / 2397 /

Altri suggerimenti

No, non è possibile farlo. Una colonna calcolata può essere derivata solo dai valori di altri campi nella stessa riga. Per calcolare un aggregato da un'altra tabella devi creare una vista.

Se l'applicazione deve mostrare le statistiche, porre le seguenti domande:

  1. È davvero necessario mostrarlo in tempo reale? Se è così, perché? Se è davvero necessario farlo, allora dovresti usare i trigger per aggiornare una tabella. Questo si collega a un breve articolo di Wikipedia sulla denormalizzazione. I trigger influiranno sulle prestazioni di scrittura sugli aggiornamenti delle tabelle e si basano sui trigger attivi.
  2. Se è necessario solo a scopo di report, è possibile eseguire il calcolo in una vista o in un report.
  3. Se è necessario supportare frequenti report ad-hoc, potresti trovarti nel regno di un data mart e di un processo ETL durante la notte.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top