/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Beregnet felt i SQL
Fra : Michael


Dato : 05-11-04 09:06

Hej Gruppe
Er der her en venlig sjæl der kan fortælle mig hvordan man danner et
beregnet felt i forbindelse med en Query, som laver en forespøgsel i
microsoft sql.
Det felt som jeg gerne vil have i mit regneark skal dividere en kostpris
med en prisenhed og returnere dette til regnearket.

Håber jeg udtrykker mig klart.

På forhånd tak

Mvh
MIchael

 
 
Per Rønne (05-11-2004)
Kommentar
Fra : Per Rønne


Dato : 05-11-04 09:53

Michael <Michael@michael.dk> wrote:

> Er der her en venlig sjæl der kan fortælle mig hvordan man danner et
> beregnet felt i forbindelse med en Query, som laver en forespøgsel i
> microsoft sql.
> Det felt som jeg gerne vil have i mit regneark skal dividere en kostpris
> med en prisenhed og returnere dette til regnearket.

Jeg kender naturligvis SQL, men ikke Microsoft SQL, men jeg ville sige
at du ikke /kan/ danne et beregnet felt i en tabel.

Derimod kan du lave et view, som indeholder et beregnet »felt«.

altså noget i retning af:

create view x as
select distinct kostpris/prisenhed y
from z;

Du skal nok have flere domæner [felter] med i viewet [den virtuelle
relation], men det må du selv rode med. »Distinct« er nødvendig for at
undgå duplikater, hvilket jo ville gøre det til en
ikke-relationsdatabase.
--
Per Erik Rønne

Jens Gyldenkærne Cla~ (05-11-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 05-11-04 10:28

Per Rønne skrev:

> Jeg kender naturligvis SQL, men ikke Microsoft SQL, men jeg ville sige
> at du ikke /kan/ danne et beregnet felt i en tabel.

MSSQL (7 og nyere) understøtter faktisk beregnede kolonner. De kan oven
i købet (i visse tilfælde) indekseres.

Kig under "computed columns" i BOL.

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Per Rønne (05-11-2004)
Kommentar
Fra : Per Rønne


Dato : 05-11-04 10:58

Jens Gyldenkærne Clausen <jens@gyros.invalid> wrote:

> Per Rønne skrev:
>
> > Jeg kender naturligvis SQL, men ikke Microsoft SQL, men jeg ville sige
> > at du ikke /kan/ danne et beregnet felt i en tabel.
>
> MSSQL (7 og nyere) understøtter faktisk beregnede kolonner. De kan oven
> i købet (i visse tilfælde) indekseres.
>
> Kig under "computed columns" i BOL.

Hvad skulle egentlig fordelen være ved et beregnet felt, i forhold til
at bruge et view, være? Og bliver de beregnede værdier for disse
beregnede felter lagret i selve databasen?
--
Per Erik Rønne

Jens Gyldenkærne Cla~ (05-11-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 05-11-04 13:01

Per Rønne skrev:

> Hvad skulle egentlig fordelen være ved et beregnet felt, i forhold til
> at bruge et view, være?

Man undgår et ekstra objekt - og der er mulighed for at indeksere de
beregnede værdier.

Jeg har dog ikke selv brugt det - jeg prøvede lidt en gang, og droppede
det da det gav problemer med backup-procedurerne. Men min sql-guru
(Robert Vieira, Professional SQL Server 2000 Programming) skriver dog
følgende:

"Im actually surprised that I haven't heard much debate about the use of
computed columns. Rules for normalization of data say that we should not
have a column in our table for information that can be derived from
other columns - that's exactly what a computed column is!

I'm glad the religious zealots of normalization haven't weighed into
this one much, as I like computed columns as something of a compromise.
By default, you aren't storing the data twice, and you don't have issues
with the derived values not agreeing with the base values because they
are calculated on the fly directly from the base values. However, you
still get the end result you wanted. Note that, if you index the
computed column, you are indeed actually storing the data (you have to
for the index). This, however, has its own benefits when it comes to
read performance.

This isn't the way to do everything related to derived data, but it sure
is an excellent helper for most situations."


> Og bliver de beregnede værdier for disse beregnede felter lagret i
> selve databasen?

Som det fremgår af citatet ovenfor, lagres værdierne ikke som standard,
men de lagres hvis man lægger et indeks på kolonnen.

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408195
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste