Avatar billede rille101 Nybegynder
24. marts 2011 - 10:43 Der er 8 kommentarer og
1 løsning

sammenlæg stemmer i kolonne og vis total

Hej. Jeg har en tabel der ser nogenlunde sådan ud:

month  year  kbh  aarhus  odense  esbjerg
3          2011      3          5            2          7
2          2011      4          7            3          4

alle værdier er "int" og year er "year"

Jeg har så lavet en opstilling af et par løkker og recordsets der generer en html tabel med opstilling af antal besøg pr. måned.

Hvordan får jeg nemmest lavet en række lige under oplistningen af bynavne, der med fed skrift viser det totale antal besøg for hver by?

Her er min kode:

  <%
Dim myConn
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.open(sConn)


set RSstationnames=Server.CreateObject("ADODB.recordset")
RSstationnames.Open "SELECT * FROM steder WHERE touch = -1 ORDER by navn", myConn

set RSstationcounter=Server.CreateObject("ADODB.recordset")
RSstationcounter.Open "SELECT * FROM steder WHERE touch = -1 ORDER by navn", myConn
%>
<%
set RScounts=Server.CreateObject("ADODB.recordset")
RScounts.Open "SELECT * FROM stats", myConn
%>





<table width="95%" border="1" align="center" cellpadding="10" cellspacing="0" bordercolor="#FFFFFF">
              <tr>
                <td valign="top" bordercolor="#3C6088" class="kontrol-menu"><p>Tæller</p>
                  <table width="100%" border="1" cellspacing="0" cellpadding="0">
                    <tr>
                    <td height="80"></td>
                  <%
                  stationCounter = 0
                 
                  colorcounter = 0
                 
                 
                  Do while not RSstationnames.eof
                  if colorcounter = 1 then
                  color = "#FFFFFF"
                  else
                  color = "#E3EAF2"
                  end if
                    stationname = RSstationnames("navn")
                    tecnavn = RSstationnames("tecnavn")
                    stationCounter = stationCounter + 1
                    %>
                    <td height="80" valign="top" bgcolor=<%=color%> class="Rotate90"><%=stationname%></td>
                    <%
                    colorcounter = colorcounter + 1
                    if colorcounter = 2 then
                    colorcounter = 0
                    end if
                    RSstationnames.movenext
                    loop
                    %>
                    </tr>
                    <%
                    buildTDnumber = 0
                    Do while not RScounts.EOF
                    %>
                    <tr>
                    <td class="kontrol-indholdstekst"><%=MonthName(RScounts("Month"))%> <%=RScounts("Year")%></td>
                    <%
                    colorcounter = 0
                    Do while not buildTDnumber = stationCounter
                    if colorcounter = 1 then
                  color = "#FFFFFF"
                  else
                  color = "#E3EAF2"
                  end if
                    Countertecnavn = RSstationcounter("tecnavn")
                    buildTDnumber = buildTDnumber + 1%>
                    <td align="right" bgcolor=<%=color%> class="kontrol-indholdstekst"><%=RScounts(""&Countertecnavn&"")%></td>
                   
                    <%
                    colorcounter = colorcounter + 1
                    if colorcounter = 2 then
                    colorcounter = 0
                    end if
                    RSstationcounter.movenext
                    loop%>
                    </tr>
                    <%
                    set RSstationcounter=Server.CreateObject("ADODB.recordset")
                    RSstationcounter.Open "SELECT * FROM steder WHERE touch = -1 ORDER by navn", myConn
                    buildTDnumber = 0
                    RScounts.movenext
                    loop
                    %>                 
                  </table>
                <p></p></td>
              </tr>
            </table>
Avatar billede rille101 Nybegynder
24. marts 2011 - 10:46 #1
Nåh ja, har også lige denne tabel som jeg referer til:

id    navn      tecnavn  touch 
1  København    kbh      -1
osv...
25. marts 2011 - 09:44 #2
rille101, jaevnfoer vores korrespondande andetsteds:  jeg kan ikke finde mig til rette i din applikation, men du er ogsaa interresseret i forslag til en mysql loesning (fra mig eller andre) som du saa selv kan indsaette i applikationen.  Det skal jeg forsoege, men saa maa jeg foerst forstaa dine data bedre.

Du har to tabeller:
steder
id, navn, technavn, touch

stats
month, year, kbh, aarhus, odense, esbjerg

steder tabellen synes at vaere ligetil.  Men jeg har spoergsmaal til stats tabellen:

(1)  Hvordan og hvornaar fylder du data i tabellen?  Holder du rede paa antal besoeg per by andetsteds og saa ved maanedens slutning indfoerer en ny raekke i tabellen med data som du viser i spoergsmaalet?

(2)  Er du ikke, nu eller i fremtiden, interesseret i besoeg i andre end de naevnte fire byer?  Ellers ville jeg foreslaa du laver stats tabellen saaledes:

stats
id month year stad antal

Hvis du saa i april 2011 faar 5 besoeg i kbh som har id1 i steder, 3 besoeg i odense som maaske har id 3, og 7 besoeg i doellefjellemusse som maaske har id 27, saa foerer du det ind saaledes:

id month year stad antal
1      3      2011  1    5
2      3      2011  3    3
3      3      2011  27  7   

Hvis du kunne svare paa (1) og fortaelle om du vil beholde strukturen i stats tabellen eller vil vaere interesseret i at skifte til den struktur jeg foreslaar i (2) saa kan jeg gaa videre.
Avatar billede rille101 Nybegynder
25. marts 2011 - 14:14 #3
1.
Jeg har en kode der tjekker når der er brug for en ny måned, og opretter en linje når det er nødvendigt.
Jeg har f.eks. en maskine stående i kbh, og den ved selv at den hedder kbh. når man klikker på rundt med den maskine tæller den selv, hvor mange gange der f.eks. er blevet klikket på den i marts 2011.

2.
Grunden til stats tabellens opbygning er at jeg har nemmere ved, med min kunnen, at lave en opstilling over månedlige visninger af de forskellige steder.
25. marts 2011 - 17:48 #4
Det bliver nok ikke foer i morgen.  Jeg staar og skal afsted.
26. marts 2011 - 13:22 #5
Ok, saa er jeg tilbage.  Ifoelge #3 antager jeg at tabellen stats har den foelgende struktur og at vaerdierne allerede sidder i tabellen.  For test har jeg fyldt nogle vaerdier ind:

stats
month year kbh aarhus odense esbjerg
1          2010  5        6            7            8
2          2011  4        5            6            7

Totalerne per by faar man saa med denne sql query:

SELECT SUM(kbh) AS kbh, sUM(aarhus) AS aarhus, sUM(odense) AS odense, sUM(esbjerg) AS esbjerg FROM stats

Som giver dette resultat:

kbh aarhus odense esbjerg
9        11        13          15

Saa jeg vil gaette paa at du i din applikation skal goere saadan noget:

setRStotal=Server.....
RStotal.Open "SELECT SUM(kbh) AS kbh, sUM(aarhus) AS aarhus, sUM(odense) AS odense, sUM(esbjerg) AS esbjerg FROM stats"

hvilket du saa indsaetter i tabellen efter slutningen af loekken 'Do while not RScount.eof' paa samme maade som du insaetter counts.
Avatar billede rille101 Nybegynder
28. marts 2011 - 06:41 #6
Det ser fornuftigt ud. Det afprøver jeg lige i eftermiddag.
30. marts 2011 - 06:38 #7
rille101, hvordan gik det med at afproeve det?  Var mit indlaeg til hjaelp?
Avatar billede rille101 Nybegynder
30. marts 2011 - 07:10 #8
Sidder og roder med det nu.
Har haft lidt problemer med min webserver, da den skulle flyttes til iis 7, men nu kører den (vistnok) uden fejl igen.
Avatar billede rille101 Nybegynder
30. marts 2011 - 08:47 #9
Din SQL var lige hvad jeg havde brug for.
Mange tak!
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
Computerworld tilbyder specialiserede kurser i database-management

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