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

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Sum i database
Fra : Bo


Dato : 12-12-06 14:16

Hej

Jeg har en database hvor table1 indeholder tallet 5 og tabel 2
indeholder tallet 6.
Disse to tal vil jeg gerne kunne lægge sammen – og dermed vise en
sum.

Nogen der kan hjælpe med en simpel løsning eller med et link hvor
til jeg kan læse noget om dette?

Bo


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Jens Gyldenkærne Cla~ (12-12-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 12-12-06 15:18

Bo skrev:

> Jeg har en database hvor table1 indeholder tallet 5 og tabel 2
> indeholder tallet 6.

I hvilke felter ligger tallene? Hvilken (type af) information
gemmer de?

Du kan godt summere på tværs af tabeller, men det foregår
sædvanligvis på et enkelt felt i én tabel. Hvis summen skal give
mening, vil der som regel være en sammenhæng mellem de tal der
indgår (fx antal varer, en vægt i kilo, et beløb i kr) - og så er
det ofte også bedst at gemme oplysningen i samme felt og samme
tabel.

En almindelig sum over alle poster i en tabel kan laves som følger:

   SELECT SUM(talfelt) FROM tabel

Hvis det kun er nogle af posterne der skal medtages, kan man lave
et kriterium:

   SELECT SUM(talfelt) FROM tabel WHERE x = 42

Hvis det er nødvendigt at summere over felter fra forskellige,
ikke-relaterede tabeller, kan det gøres med en union-forespørgsel:

SELECT SUM(subtotal)
FROM
   (SELECT talfelt As Subtotal FROM tabel1
   UNION ALL
   SELECT talfelt FROM tabel2)

- men det bør ikke være nødvendigt hvis databasen er fornuftigt
opbygget.


Et sidste alternativ - hvis det bare drejer sig om at lægge tal
sammen uden mening:

   SELECT 5 + 6 As minSum

Spørgsmålet hører egentlig til i en af databasegrupperne, men så
vidt jeg husker giver html.dk ikke adgang til dem.
--
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

Bo (12-12-2006)
Kommentar
Fra : Bo


Dato : 12-12-06 15:36

Jens GyldenkærneClausen wrote in
dk.edb.internet.webdesign.serverside.asp:
>
> Du kan godt summere på tværs af tabeller, men det foregår
> sædvanligvis på et enkelt felt i én tabel. Hvis summen skal give
> mening, vil der som regel være en sammenhæng mellem de tal der
> indgår (fx antal varer, en vægt i kilo, et beløb i kr) - og så er
> det ofte også bedst at gemme oplysningen i samme felt og samme
> tabel.
>
> En almindelig sum over alle poster i en tabel kan laves som
følger:
>
>    SELECT SUM(talfelt) FROM tabel
>
> Hvis det kun er nogle af posterne der skal medtages, kan man lave
> et kriterium:
>
>    SELECT SUM(talfelt) FROM tabel WHERE x = 42
>
> Hvis det er nødvendigt at summere over felter fra forskellige,
> ikke-relaterede tabeller, kan det gøres med en union-forespørgsel:
>
> SELECT SUM(subtotal)
> FROM
>    (SELECT talfelt As Subtotal FROM tabel1
>    UNION ALL
>    SELECT talfelt FROM tabel2)
>
> - men det bør ikke være nødvendigt hvis databasen er fornuftigt
> opbygget.
>
>
> Et sidste alternativ - hvis det bare drejer sig om at lægge tal
> sammen uden mening:
>
>    SELECT 5 + 6 As minSum
>
> Spørgsmålet hører egentlig til i en af databasegrupperne, men så
> vidt jeg husker giver html.dk ikke adgang til dem.
> --
Mig det udtrykker mig lidt forkert.
Har en db med en tabel vi kalder den tabel 1 - denne tabel
indeholder rækkerne a og b. Række indeholder tallet 1 og række b
tallet 5.
Disse to tal vil jeg gerne lave en sum af - men hvordan?

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Bo (12-12-2006)
Kommentar
Fra : Bo


Dato : 12-12-06 19:13

Har prøvet med denne - virker ikke
<%

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" &
server.MapPath("db1.mdb")


SQLstmt = "SELECT * FROM t1 ;"
'
'response.write SQLstmt

Conn.Execute (SQLstmt)

Set rs = conn.Execute(SQLstmt)
%>

<%
DO WHILE NOT rs.EOF

a = rs("a")
b = rs("b")


sum = a + b
response.write sum
%>

<%
rs.Close
Set rs = Nothing

Conn.Close
set Conn = Nothing
%>

FEJL -

Microsoft VBScript compilation error '800a03fb'

Expected 'Loop'

/ny/n.asp, line 42
-------------------------
Nogen der vil hjælpe?

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Bo (12-12-2006)
Kommentar
Fra : Bo


Dato : 12-12-06 19:21

Jeg har nu skiftet ud med denne
<%
rs.MoveNext
LOOP
RS.Close
Response.Write "</TABLE>"

conn.Close
Set conn = nothing
Set SQLstmt = nothing
%>

men den skriver kun talne - ligger dem ikke sammen

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Bo (12-12-2006)
Kommentar
Fra : Bo


Dato : 12-12-06 19:45

Har nu prøvet følgende, men den viser kun talne og lægger dem
ikke sammen:

<%

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" &
server.MapPath("db1.mdb")


SQLstmt = "SELECT [a] + [b] AS MinSum FROM t1 ;"
'
'response.write SQLstmt

Conn.Execute (SQLstmt)

Set rs = conn.Execute(SQLstmt)
%>
<%
DO WHILE NOT rs.EOF
minsum = rs("minsum")
%>
<%=minsum%>

<%
rs.MoveNext
LOOP
RS.Close

conn.Close
Set conn = nothing
Set SQLstmt = nothing
%>


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Bo (12-12-2006)
Kommentar
Fra : Bo


Dato : 12-12-06 22:23

Har fået det til at virke, men lige et par spørgsmål til slut:
1. Kender i et sted hvor man kan finde de forskllige tegn for at
gange, trække fra osv,

2. en linje hvis man vil lægge alle tal sammen i en hel tabel.

Sidste etn stor tak til jer begge!

Bo

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jørn Andersen (12-12-2006)
Kommentar
Fra : Jørn Andersen


Dato : 12-12-06 23:25

On 12 Dec 2006 18:45:03 GMT, Bo <bon@olympus.dk> wrote:

>Har nu prøvet følgende, men den viser kun talne og lægger dem
>ikke sammen:
<snip>

>SQLstmt = "SELECT [a] + [b] AS MinSum FROM t1 ;"

Formentlig fordi dine tal står i et tekstfelt i stedet for et numerisk
felt.

Hvis ikke du har mulighed for at rette til et tal-felt, så prøv:
SQLstmt = "SELECT CLng([a]) + CLng([b]) AS MinSum FROM t1;"


Good luck!

--
Jørn Andersen,
Brønshøj

Bo (13-12-2006)
Kommentar
Fra : Bo


Dato : 13-12-06 09:09

Jørn Andersen wrote in dk.edb.internet.webdesign.serverside.asp:
> On 12 Dec 2006 18:45:03 GMT, Bo <bon@olympus.dk> wrote:
>
> >Har nu prøvet følgende, men den viser kun talne og lægger dem
> >ikke sammen:
> <snip>
>
> >SQLstmt = "SELECT [a] + [b] AS MinSum FROM t1 ;"
>
> Formentlig fordi dine tal står i et tekstfelt i stedet for et numerisk
> felt.
>
> Hvis ikke du har mulighed for at rette til et tal-felt, så prøv:
> SQLstmt = "SELECT CLng([a]) + CLng([b]) AS MinSum FROM t1;"
>
>
> Good luck!
>
> --
> Jørn Andersen,
> Brønshøj

Det er tal felter og jeg har fået dem til at pluse, nu vil jeg bare gerne
have lagt alle tallene sammen i tabelen. De tidligere forslag virker bare
ikke.

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jørn Andersen (12-12-2006)
Kommentar
Fra : Jørn Andersen


Dato : 12-12-06 19:12

On 12 Dec 2006 14:35:50 GMT, Bo <bobo@dbmail.dk> wrote:

>Jens GyldenkærneClausen wrote in
>dk.edb.internet.webdesign.serverside.asp:
<snip>
>>    SELECT SUM(talfelt) FROM tabel WHERE x = 42

>Mig det udtrykker mig lidt forkert.
>Har en db med en tabel vi kalder den tabel 1 - denne tabel
>indeholder rækkerne a og b. Række indeholder tallet 1 og række b
>tallet 5.
>Disse to tal vil jeg gerne lave en sum af - men hvordan?


Det der hedder "rækker" i et regneark, hedder "poster" i en database.
Det der hedder "kolonner" i et regneark, hedder "felter" i en
database.


Hvis du mener "række" og ikke "kolonne":
Hvis du bruger Jens' eksempel, så kunne det hedder noget i retning af:
SELECT SUM(talfelt) FROM tabel1 WHERE raekke IN ('a', 'b')


Hvis du mener "kolonne" og ikke "række":
SELECT [a] + [b] AS MinSum FROM tabel1 WHERE id = 37
- eller hvad nu dit ID eller andet kendetegn for den pågældende post
er.

(Stadig kolonne:)
Hvis du ønsker at have kolonne a og kolonne b og summen for alle
rækker (poster):
SELECT a, b, [a] + [b] AS MinSum FROM tabel1


Good luck!

--
Jørn Andersen,
Brønshøj

Jens Gyldenkærne Cla~ (13-12-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 13-12-06 09:08

Bo skrev:

> Har nu prøvet følgende, men den viser kun talne og lægger dem
> ikke sammen:

Forudsat at du arbejder med talfelter (jf. Jørns indlæg), er
problemet måske at der kun lægges sammen på den ene led.

Hvis vi fx har følgende tabel:

a    b
3    2
5    1
6    2

- kan du summere vandret eller lodret, eller lave en totalsum
(vandret + lodret)


Den vandrette sum får du som følger:

   SELECT a + b AS vandretSum FROM t1
   
Det vil give følgende resultat:

vandretSum
5
6
8

Den lodrette sum fås ved at bruge sum:

   SELECT SUM(a) AS sumA, SUM(b) AS sumB FROM t1

Det vil give følgende resultat:

sumA    sumB
14    5

Hvis man skal have totalen af alle tal, kan man summere over den
vandrette sum:

   SELECT SUM(a + b) AS totalSum FROM t1


totalSum
19

   

> Conn.Execute (SQLstmt)
>
> Set rs = conn.Execute(SQLstmt)


Der er ingen grund til at køre forespørgslen to gange (slet øverste
linje herover).
--
Bolig søges. Andel eller leje i Emdrup, Nordvest, Nørrebro, Søborg
eller Brønshøj, max 6000 pr. måned.
Kontakt pr. mail - nospam(at)gyros.dk
Jens Gyldenkærne Clausen

Bo (13-12-2006)
Kommentar
Fra : Bo


Dato : 13-12-06 19:32

Hej Jens

Det hele virker perfekt - så mange gange tak for hjælpen.

Bo

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jens Gyldenkærne Cla~ (13-12-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 13-12-06 09:13

Bo skrev:

> 1. Kender i et sted hvor man kan finde de forskllige tegn for at
> gange, trække fra osv,

Hvilke tegn savner du?

+, -, * og / er de mest almindelige.



> 2. en linje hvis man vil lægge alle tal sammen i en hel tabel.

Du er nødt til at få opbygningen af en database mere ind under
huden. Det giver ikke mening at tale om at lægge alle tal i en
tabel sammen - men man kan lægge alle tal i et felt sammen. Det
gøres, som vist tidligere i tråden, med SUM:

SELECT SUM(talfelt) as lodretSum FROM t1
--
Bolig søges. Andel eller leje i Emdrup, Nordvest, Nørrebro, Søborg
eller Brønshøj, max 6000 pr. måned.
Kontakt pr. mail - nospam(at)gyros.dk
Jens Gyldenkærne Clausen

Søg
Reklame
Statistik
Spørgsmål : 177496
Tips : 31968
Nyheder : 719565
Indlæg : 6408490
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste