/ 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
Sum i mysql table
Fra : IvanMort


Dato : 06-11-02 10:59

Jeg har en table :

CREATE TABLE table1 (
id int(10) NOT NULL auto_increment,
Fornavn text NOT NULL,
Efternavn text NOT NULL,
titel text NOT NULL,
tlf_privat text NOT NULL,
kirke text NOT NULL,
postnr text NOT NULL,
www text NOT NULL,
bynavn text NOT NULL,
email text NOT NULL,
tlf_arbejde text NOT NULL,
mobil text NOT NULL,
kommentarer text NOT NULL,
adresse text NOT NULL,
type_kirke text NOT NULL,
fax text NOT NULL,
løfte_1_beløb text NOT NULL,
løfte_1_event text NOT NULL,
løfte_1_dato text NOT NULL,
løfte_2_beløb text NOT NULL,
løfte_2_event text NOT NULL,
løfte_2_dato text NOT NULL,
løfte_3_beløb text NOT NULL,
løfte_3_event text NOT NULL,
løfte_3_dato text NOT NULL,
totalt_løfte text NOT NULL,
betalt_løfte_1 text NOT NULL,
dato_betalt_1 text NOT NULL,
betaling_1 text NOT NULL,
betaling_5 text NOT NULL,
betaling_9 text NOT NULL,
betalt_løfte_2 text NOT NULL,
dato_Betalt_2 text NOT NULL,
betaling2 text NOT NULL,
betaling4 text NOT NULL,
betaling6 text NOT NULL,
betalt_løfte_3 text NOT NULL,
dato_betalt_3 text NOT NULL,
betaling3 text NOT NULL,
betaling7 text NOT NULL,
betaling8 text NOT NULL,
betalte_løfter text NOT NULL,
gave_1 text NOT NULL,
gave_2 text NOT NULL,
gave_3 text NOT NULL,
gave_4 text NOT NULL,
dato_gave_1 text NOT NULL,
dato_gave_2 text NOT NULL,
dato_gave_3 text NOT NULL,
dato_gave_4 text NOT NULL,
betaling_a text NOT NULL,
betaling_b text NOT NULL,
betaling_c text NOT NULL,
betaling_d text NOT NULL,
økonomisk_støtte text NOT NULL,
info_PR text NOT NULL,
bøn text NOT NULL,
børnenetværk text NOT NULL,
ungdomsnetværk text NOT NULL,
musik text NOT NULL,
finans text NOT NULL,
vejledning text NOT NULL,
praktisk text NOT NULL,
værtskab text NOT NULL,
Total_KR_Betalt text NOT NULL,
Løfte_Tilbage text NOT NULL,
betalt_løfte_4 text NOT NULL,
betalt_løfte_5 text NOT NULL,
betalt_løfte_6 text NOT NULL,
betalt_løfte_7 text NOT NULL,
betalt_løfte_8 text NOT NULL,
betalt_løfte_9 text NOT NULL,
dato_betalt_4 text NOT NULL,
dato_betalt_5 text NOT NULL,
dato_betalt_6 text NOT NULL,
dato_betalt_7 text NOT NULL,
dato_betalt_8 text NOT NULL,
dato_betalt_9 text NOT NULL,
update date NOT NULL default '2002-10-31',
PRIMARY KEY (id),
KEY id (id)
) TYPE=MyISAM;

er det muligt at lægge felter sammen som i et regneark som Exel??
eks.: 'løfte_1_beløb' + 'løfte_2_beløb' + 'løfte_3_beløb' =
'totalt_løfte'
eks.: 'totalt_løfte' - 'Total_KR_Betalt' = 'Løfte_Tilbage'

--
Leveret af:
http://www.kandu.dk/
"Vejen til en hurtig løsning"


 
 
Jens Gyldenkærne Cla~ (06-11-2002)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 06-11-02 11:07

IvanMort skrev:

> Jeg har en table :
>
> CREATE TABLE table1 (

Du behøver egentlig ikke sende hele tabelstrukturen for at spørge
om man kan lægge felter sammen.

> er det muligt at lægge felter sammen som i et regneark som Exel??
> eks.: 'løfte_1_beløb' + 'løfte_2_beløb' + 'løfte_3_beløb' =

Du kan altid gøre det i en select-statement:

   SELECT felt1 + felt2 + felt3 as total

Som oftest vil det være den bedste løsning.

Du kan også altid gemme en beregnet værdi i et normalt felt:

   UPDATE tabel SET total = felt1 + felt2 + felt3

- men her er der risiko for at den gemte værdi ikke er korrekt (du
skal selv indbygge en logik der sørger for at opdatere totalfeltet
når et af underfelterne ændrer sig)


Endelig kan man i visse databasesystemer (jeg ved ikke om mysql er
et af dem) have deciderede beregnede felter i en tabel. Det giver
dog en række andre problemer - i hvert fald i MS SQL hvor jeg har
prøvet det. Hvis databasen understøtter views (gemte select-
sætninger) kan man også sagtens lægge beregnede felter ind her -
men det er ikke mindre performancekrævende end et tilsvarende
select (bare lettere at arbejde med).
--
Jens Gyldenkærne Clausen
MF (medlem af FIDUSO - www.fiduso.dk)
I ovenstående tekst benyttes nyt komma
(rettelser modtages gerne i dk.kultur.sprog)

Jens Gyldenkærne Cla~ (06-11-2002)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 06-11-02 11:25

IvanMort skrev:

> Jeg har en table :

Og jeg glemte lige et par kommentarer til selve tabellen. Det har
intet med dit spørgsmål at gøre - men sådan er det indimellem at
skrive på usenet

Først og fremmest giver du alle felter (pånær 2) datatypen text.
Den type er beregnet til tekstdata op til ca. 65.000 tegn. Det
virker noget voldsomt at bruge den type til normale tekstfelter som
navn, adresse, telefonoplysninger mv. Prøv at kigge på CHAR, der
kan indeholde op til 255 tegn (man definerer selv hvor mange - fx
med CHAR(50) som giver et felt på max 50 tegn).

Derudover bruger du en del danske bogstaver. Det er ikke sikkert at
det giver nogen problemer - men hvis du fx skal kalde databasen via
en hjemmeside kan det give problemer med feltnavne der indeholder
ikke-ASCII-tegn.

Så har du et felt kaldet "update". Det er måske heller ikke et
problem i mysql (jeg ved ikke om programmet er versalfølsomt og om
det i givet fald kun er UPDATE der er reserveret) - men generelt
bør man undgå at bruge reserverede ord (fx Date, Update, By etc.) i
feltnavne.

Endelig indeholder din tabel flere gentagne grupper (fx løfte_*_*).
Den slags bør - i hvert fald i teorien - flyttes ud i selvstændige
tabeller, for at normalisere databasen. Der har tidligere været
nogle rigtig gode gennemgange af databasenormalisering her i
gruppen - jeg skal prøve at se om jeg kan finde dem frem igen
(andre skal endelig byde ind).
--
Jens Gyldenkærne Clausen
MF (medlem af FIDUSO - www.fiduso.dk)
I ovenstående tekst benyttes nyt komma
(rettelser modtages gerne i dk.kultur.sprog)

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408938
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste