|
| 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
| |
|
|