Avatar billede ramforest Nybegynder
10. april 2003 - 14:41 Der er 32 kommentarer og
1 løsning

værdier fra flere tabeller lægges sammen mm.

Jeg har en værdi i tabel A som skal lægges sammen med mange værdier fra tabel B, hvor brugerid i begge tabeller er lig hinanden.
Avatar billede ramforest Nybegynder
10. april 2003 - 14:43 #1
...eller skal det laves i access, som jeg bruger til databasen
Avatar billede toctoc Nybegynder
10. april 2003 - 14:47 #2
Ikke noget problem. Hvordan skal resultatet præsenteres og bruges?

Mvh. TocToc
Avatar billede ramforest Nybegynder
10. april 2003 - 14:50 #3
Det skal bruges til en rangliste. Facit skal vises ud for passende brugernavn.

Se evt.
http://students.aabc.dk/ve/sbc/rangliste.asp
Avatar billede medions Nybegynder
10. april 2003 - 14:52 #4
strSQL = "SELECT kroner.tblA, kroner.tblB FROM tblA, tblB WHERE id.tblA = id.tblB"

//>Rune
Avatar billede toctoc Nybegynder
10. april 2003 - 14:58 #5
Altså i ASP til præsentation på en webside. Runes svar giver dig en template til en SQL forespørgsel som du kan bruge. Eller hvis du hellere vil have et fuldt eksempel må du lige sende enten databasen eller i det mindste databaselayoutet (tabeller, kolonner, datatyper mv) til enten Rune eller mig.
Avatar billede medions Nybegynder
10. april 2003 - 15:05 #6
well, han kan jo gøre sådan her:

strSQL = "SELECT SUM(kroner), kroner.tblA, kroner.tblB FROM tblA, tblB WHERE id.tblA = id.tblB"

Set objRs = objConn.Execute(strSQL)

While Not objRs.EOF
  Response.Write("Lagt sammen giver det: " & objRs(0))
objRs.MoveNext()
Wend

//>Rune
Avatar billede ramforest Nybegynder
10. april 2003 - 15:21 #7
Den skriver Object required: ''

Skal der stå noget der?
Avatar billede ramforest Nybegynder
10. april 2003 - 15:26 #8
Dele af databasen og ranglisten kan hentes her:

http://students.aabc.dk/ve/sbc/DBogRangliste.zip
Avatar billede toctoc Nybegynder
10. april 2003 - 15:29 #9
Jeg er på vej ud af døren og vender tilbage senere.
Avatar billede ramforest Nybegynder
10. april 2003 - 15:30 #10
ok tak
Avatar billede eagleeye Praktikant
10. april 2003 - 15:31 #11
Du kan lave din SQL som denne til at ligge alle fra tabel B samme med en fra tabel A hvor bruger er lig hinanden.:


SQL = "SELECT Sum(B.kolB) + A.kolA as Summen, A.brugerID FROM A LEFT JOIN B ON A.brugerID = B.brugerID GROUP BY A.kolA, A.brugerID;"
Avatar billede eagleeye Praktikant
10. april 2003 - 15:32 #12
Som du kan se er det kolB fra tabel B som summeres og ligges samme med kolA fra tabel A i en ny kolonne Summen.
Avatar billede eagleeye Praktikant
10. april 2003 - 15:44 #13
Du har denne SQL linje idag som finde top listen:


strSQL = "Select * From Bruger Order by Kroner Desc"



Den skal laves om så den ser sådan her ud.:

SQL = "SELECT bruger.brugerID, Sum(ikkeafgjortbets.Indsats)+bruger.kroner AS summen FROM bruger LEFT JOIN ikkeafgjortbets ON bruger.BrugerID = ikkeafgjortbets.BrugerID GROUP BY bruger.brugerID, ikkeafgjortbets.Indsats,bruger.kroner ORDER BY Sum(ikkeafgjortbets.Indsats)+bruger.kroner DESC;"
Avatar billede eagleeye Praktikant
10. april 2003 - 15:44 #14
Samt denne linje:

<p align="right"><% response.write rs("Kroner")%></td>

Til denne:
<p align="right"><% response.write rs("summen")%></td>
Avatar billede ramforest Nybegynder
10. april 2003 - 15:52 #15
Jeg har foretaget de ændringer du har foreslået i filen:
http://students.aabc.dk/ve/sbc/rangliste1.asp
Men som du kan se, kan jeg ikke få det til at virke
Avatar billede eagleeye Praktikant
10. april 2003 - 16:24 #16
Kan du ikke prøve at vise linjerne omkring linje 31?
Avatar billede eagleeye Praktikant
10. april 2003 - 16:25 #17
Arh glem det jeg kan se en fejl.

Jeg har skrevet SQL det skal være strSQL sådan her:


strSQL = "SELECT bruger.brugerID, Sum(ikkeafgjortbets.Indsats)+bruger.kroner AS summen FROM bruger LEFT JOIN ikkeafgjortbets ON bruger.BrugerID = ikkeafgjortbets.BrugerID GROUP BY bruger.brugerID, ikkeafgjortbets.Indsats,bruger.kroner ORDER BY Sum(ikkeafgjortbets.Indsats)+bruger.kroner DESC;"
Avatar billede ramforest Nybegynder
10. april 2003 - 16:55 #18
Nu har jeg fået det til at virke. Det er fungerer dog stadig ikke helt efter planen... Umiddelbart ser det ud til, at hvis man har mere end et væddemål i gang, så optræder man flere gange på listen.
Avatar billede eagleeye Praktikant
10. april 2003 - 17:03 #19
Prøv at vise din SQL sætning.
Avatar billede ramforest Nybegynder
10. april 2003 - 17:07 #20
den her?: strSQL = "SELECT bruger.brugerID, Sum(ikkeafgjortbets.Indsats)+bruger.kroner AS summen FROM bruger LEFT JOIN ikkeafgjortbets ON bruger.BrugerID = ikkeafgjortbets.BrugerID GROUP BY bruger.brugerID, ikkeafgjortbets.Indsats,bruger.kroner ORDER BY Sum(ikkeafgjortbets.Indsats)+bruger.kroner DESC;"
Avatar billede eagleeye Praktikant
10. april 2003 - 17:19 #21
Ja. Det er underligt hvorfor folk kommer med flere gange.
Avatar billede ramforest Nybegynder
10. april 2003 - 17:22 #22
Det er forresten heller ikke alle deltagerne der bliver vist, for i øjeblikket er der 66 tilmeldte, og den viser kun op til 54, og laver en fejl ved den post
Avatar billede eagleeye Praktikant
10. april 2003 - 17:35 #23
Prøv lige at lave SQL som denne, der var vist kommet en kolonne for meget i GROUP BY delen:


strSQL = "SELECT bruger.brugerID, Sum(ikkeafgjortbets.Indsats)+bruger.kroner AS summen FROM bruger LEFT JOIN ikkeafgjortbets ON bruger.BrugerID = ikkeafgjortbets.BrugerID GROUP BY bruger.brugerID, bruger.kroner ORDER BY Sum(ikkeafgjortbets.Indsats)+bruger.kroner DESC;"
Avatar billede ramforest Nybegynder
10. april 2003 - 17:40 #24
Det ser ud til at have hjulpet :D Men den laver nu stadig en underlig fejl:

Microsoft VBScript runtime error '800a000d'
Type mismatch: 'formatnumber'
/ve/sbc/rangliste1.asp, line 67

Du skal nok få nogle flere point, hvis du kan hjælpe med at løse dette også
Avatar billede eagleeye Praktikant
10. april 2003 - 17:50 #25
Det kommer i denne linje:

<p align="right"><% response.write formatnumber (profit,0) %>

Det kunne tyde på profit er tom "" eller lig Null så prøv at tilføje denne linje:

if len("" & profit) = 0 then profit = 0



Lige efter denne linje:
profit = ((rs("summen")-5000)*100)/5000
Avatar billede ramforest Nybegynder
10. april 2003 - 18:07 #26
Det har jeg sat ind nu. Nu viser den alle brugere, men ved nogle af dem viser den ikke antal kr. de har. Jeg tror det skyldes, at disse brugere ikke har nogen igangværende væddemål. Kan man gøre sådan, at der tages højde for dette?
Avatar billede eagleeye Praktikant
10. april 2003 - 19:30 #27
Jeg kan se problemmet. Den enste måde jeg umiddelbart kan se det løst på er ved at indføre en iif i SQL sætningen da den vil give NULL for dem som ikke har igangværnde væddemål. Og null+xxx giver null. Derfor står der ikke noget resultat.

Så prøv med denne SQL:

strSQL = "SELECT bruger.brugerID, bruger.kroner, Sum(ikkeafgjortbets.Indsats) AS summen FROM bruger left JOIN ikkeafgjortbets ON bruger.BrugerID = ikkeafgjortbets.BrugerID GROUP BY bruger.brugerID, bruger.kroner ORDER BY iif(isNull(Sum(ikkeafgjortbets.Indsats)),0,Sum(ikkeafgjortbets.Indsats))+bruger.kroner DESC;"


Samt at lave disse to linjer kode:

profit = ((rs("summen")-5000)*100)/5000
if len("" & profit) = 0 then profit = 0


Om til dette:

total = rs("kroner")
if isNull(rs("summen")) = false then total = total + rs("summen")
profit = ((total-5000)*100)/5000
if len("" & profit) = 0 then profit = 0
Avatar billede krosus_p Nybegynder
10. april 2003 - 19:48 #28
Det virker desværre ikke helt efter hensigten.
Avatar billede ramforest Nybegynder
10. april 2003 - 19:53 #29
hov undskyld.. Det var mig der skrev det sidste indlæg, havde glemt jeg var logget på en af mine kammeraters konto
Avatar billede eagleeye Praktikant
10. april 2003 - 19:53 #30
Prøv lige at vis lidt at kode fra den linje der står do  i og 10 linjer frem det kunne se ud som om der mangler denne:

if isNull(rs("summen")) = false then total = total + rs("summen")

Da % tallet ser rigtigt ud.
Avatar billede ramforest Nybegynder
10. april 2003 - 19:58 #31
Do

i=i+1
%>
<%
total = rs("kroner")
if isNull(rs("summen")) = false then total = total + rs("summen")
profit = ((total-5000)*100)/5000
if len("" & profit) = 0 then profit = 0%>
Avatar billede eagleeye Praktikant
10. april 2003 - 20:05 #32
Arh det har jeg glemt at skrive :)  Du skal også ænde denne linje:

  <p align="right"><% response.write rs("summern")%></td>


Til denne så den skriver total rigtig ud:


  <p align="right"><% response.write total %></td>
Avatar billede ramforest Nybegynder
10. april 2003 - 23:02 #33
Jes, nu virker det! Tak for hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester