webForumDet fria alternativet

Loopa ut data i två dimensioner

ASP

2 svar · 477 visningar · startad av devotion

Medlem sedan jan. 20013 582 inlägg
Frågan#1

Hej!

Har lite funderingar.. ;)

Jag har två tabeller som relaterar till varandra. Den ena är tbAvtal och den andra är tblAvtalsUppdrag.

Jag vill loopa ut avtalen från tbAvtasuppdrag vertikalt som en lång lista.

Sen vill jag lägga alla uppdrag som hör till avtalen horisontellt från varje avtal i rätt månad.

Det ska bli som en årsplanering i excel. Dvs avtalen på y-axeln och de kopplade uppdragen på x-axeln.

Rubrikerna ska vara AVTAL - JAN - FEB - MARS ... osv

Hur ska jag lösa detta på bästa sätt...

I nuläget så hämtas avtalen med en databasfråga i varje "cell" och det blir inte så bra prestandamässigt...

Vilka tekniker finns det?

Mvh
Henrik

Medlem sedan jan. 20013 582 inlägg
#2

Ingen som har några idéer?

Mvh
Henrik

Medlem sedan juni 20008 205 inlägg
#3

Tja, typ nåt sånt här?

records = [I]SELECT * FROM tblAvtal a JOIN tblAvtalsUppdrag au ON a.Id = au.AvtalsId ORDER BY a.Id, au.Månad[/I]
previousId = "invalid"
firstRow = true
print "<table>"
foreach record in records do
    if not (record["a.Id"] == previousId) then [I]# nytt avtal, påbörja ny rad[/I]
        if firstRow then [I]#första raden[/I]
            print "<tr>"
            firstRow = false
        else [I]# inte första raden - avsluta föregående rad också[/I]
            print "</tr><tr>"
        end
    end
    print "<td>"
    print record [I]# skriv ut avtalsuppdraget[/I]
    print "</td>"
end
if not firstRow then 
    print "</tr>"
end
print "</table>"

Poängen är alltså att du hämtar alla poster sorterade (i första hand) på avtals-ID. Alltså vet vi då att alla avtalsuppdrag för ett avtal hamnar bredvid varandra i resultatet. Du kommer antagligen få behöva fippla lite med det här beroende på hur innehållet i databasen ser ut.

258 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)