Avatar billede kroger Nybegynder
15. marts 2006 - 16:34 Der er 9 kommentarer og
1 løsning

Joine to tabeller og lave sammentælling

Jeg skal have lavet en lille sammenregning af to tabeller, og liste det. Mit hoved er ved at knække sammen, så håber i kan hjælpe.

Jeg har 2 tabeller:
tabel1:
  id
  navn
  aargang

tabel2:
  id
  studentid (er samme som tabel1.id)
  prodtype
  timer

Det jeg skal have gjort er følgende.
Den skal liste hvert navn  fra tabel1. Ud fra dette navn skal den så ligge alle timer sammen fra tabel2, disse timer skal være grupperet efter hvad der er under prodtype(hvor der findes 3 forskellige typer). F.eks.

Navn          Studie      PA      Andet
----------------------------------------
Mads Larsen    34          25      12
Tom Hansen    67          13      0

Jeg kan simeplthen ikke få kringlet den sql streng der skal sætte dette sammen.
Avatar billede fennec Nybegynder
15. marts 2006 - 16:46 #1
Tror ikke du kan få det på EN række. Det må du tilpasse bagefter i ASP. Men denne burde give dig noget i den rettet stil:

"select navn, prodtype, sum(timer) as antal from tabel1 t1 left join tabel2 t2 on t1.id=t2.studentid group by navn, prodtype"
Avatar billede kroger Nybegynder
15. marts 2006 - 16:49 #2
Ja det kommer jeg nok ud i. Problemet med sum er jo bare at den summer timerne sammen, hvilket gør at jeg ikke kan adskille dem bagefter i de enkelte typer (studie, pa, andet)
Avatar billede dj_uncas Nybegynder
15. marts 2006 - 16:50 #3
Et hurtigt bud:

SELECT tabel1.id, navn, prodtype, timer
  FROM tabel1
  LEFT OUTER JOIN tabel2
    ON
    tabel1.id = tabel2.studentid

  GROUP BY navn, prodtype, timer

Det er overhovedet ikke testet, men prøv det engang.
Avatar billede fennec Nybegynder
15. marts 2006 - 16:51 #4
med group by skulle timerne gerne blive summeret bruger/gruppe vis.
Avatar billede eagleeye Praktikant
15. marts 2006 - 16:51 #5
Jo sådan her hvis prodtype indeholder enten "Studie", "PA" eller "Andet":

SELECT navn, (select sum(t2.timer) from Tabel2 t2 where t2.prodtype = 'Studie' and t2.studentid = t1.id) as StudieTimer, (select sum(t3.timer) from Tabel2 t3 where t3.prodtype = 'PA' and t3.studentid = t1.id) as PATimer, (select sum(t4.timer) from Tabel2 t4 where t4.prodtype = 'Andet' and t4.studentid = t1.id) as AndetTimer FROM Tabel1 t1
Avatar billede eagleeye Praktikant
15. marts 2006 - 16:56 #6
Det jeg mener med "prodtype indeholder enten "Studie", "PA" eller "Andet":" er at hvis kolonnen indeholder et tal (1,2,3) for studie,pa eller andet så skal den rettes lidt til.
Avatar billede eagleeye Praktikant
15. marts 2006 - 17:01 #7
info: Jeg er nød til at smutte nogle timer :)
Avatar billede kroger Nybegynder
15. marts 2006 - 17:01 #8
Når jeg prøver at bruge din eagleye får jeg følgende fejl i hovedet, hvilket jeg tolker som at den kører i en uendelig løkke eller lignende:

Response object error 'ASP 0251 : 80004005'

Response Buffer Limit Exceeded

/test/timer.asp, line 0

Execution of the ASP page caused the Response Buffer to exceed its configured limit.
Avatar billede kroger Nybegynder
15. marts 2006 - 17:10 #9
Nå, den løkke var helt og aldeles en fejl 40 af dimensioner. Havde lige i hurtigheden fået slettet rs.movenext, hvilket unægteligt giver visse problemer :-)
Din løsning virker 100% som ønsket eageleye, så tusind tak og smid endeligt et svar.
Og tak fennec og dj_uncas for at kigge på det.
Avatar billede eagleeye Praktikant
15. marts 2006 - 21:44 #10
Ok her et svar fra mig :)
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