Avatar billede hehlers Nybegynder
16. marts 2006 - 13:16 Der er 17 kommentarer og
2 løsninger

Vælge et antal fra en database som er sammenkædet med en anden

Hejsa

Jeg har en database med to tabeller. En tabel hvor der er et navn, et intervalstart og et intervalslut. - Kaldet spørgsmål.

I en anden tabel har jeg så en masse svar som er kodet sammen med et webmodul. Når folk ligger et svar ind, så skal de skrive en kode. Koden hører så sammen med intervalstart og intervalslut.

Nu vil jeg så gerne have udtrækket det samlede antal af svar til det enkelte navn/spørgsmål. Altså hvor mange svar er der til det enkelte spørgsmål?

Synes jeg har prøvet at forklare det godt, omend jeg godt kan se det er svært at forstå.
Hvis i ikke forstår det, så giv endelig besked.
Avatar billede fennec Nybegynder
16. marts 2006 - 13:28 #1
Jeg fattede i hvertfale ikke noget af det :o)
Smid din database/tabel defination herind med et par linjer data så tror jeg det bliver nemmere...

Noget i denne stil:
[TabelNavn]
id Autonummer
Navn tekst
..
..

Data:
1 fennec ....
2 hehlers ...
Avatar billede eagleeye Praktikant
16. marts 2006 - 13:34 #2
Spørgsmålet er også hvordan er de to tabeller "linket" sammen. Hvordan bliver koden som man srkiver til et interval eller omvendt?

eks på en sql som tæller:
"select count(*) as antalSvar from tabelNavn inner join tabelSvar ON tabelNavn.NOGET = tabelSvar.Kode where tabelNavn.Navn = 'Et navn'"
Avatar billede hehlers Nybegynder
16. marts 2006 - 13:35 #3
hehe fennec, kan jeg virkelig godt forstå, når jeg selv ser på et. ;)

1. tabel:
id, autonummer
navn, tekst
intervalstart, tal
intervalslut, tal


2. tabel
id, autonummer
navn, tekst
kodenummer, tal
------------------------------------------------

Jeg skal så have antallet af svar i tabel 2, som ligger imellem intervalstart og intervalslut fra tabel 1.

Hjalp det?
Avatar billede eagleeye Praktikant
16. marts 2006 - 13:39 #4
Hvordan ved man hvilken svar der høre til hvilket interval?
Avatar billede hehlers Nybegynder
16. marts 2006 - 13:40 #5
når folk svarer har de en kode de skal indtaste. Den kode ligger så imellem intervalstart og intervalslut hos en i tabel 1.
Avatar billede hehlers Nybegynder
16. marts 2006 - 13:41 #6
Håber ikke det er helt volapyk-snak :)
Avatar billede fennec Nybegynder
16. marts 2006 - 13:43 #7
Så der er f.eks en række i 1. tabel der hedder:
1. 'etNavn', 10, 20

også i 2. tabel et par rækker der hedder:
1. 'etNavn', 11
2. 'etNavn', 12
3. 'etNavn', 13
Avatar billede hehlers Nybegynder
16. marts 2006 - 13:46 #8
jaaaa!!! ;)  Og antallet af svar er i dit tilfælde så 3.

Jeg vil så gerne have en liste, hvor navn fra tabel 1 bliver vist og antallet af svar til vedkommende.

1. tabel1.navn, antalsvar.tabel2

Sorteret efter den der er flest svar til. :)
Avatar billede fennec Nybegynder
16. marts 2006 - 13:57 #9
Dette er et gæt:

select t1.navn, count(t2.id) as antal from (tabel1 t1 left join tabel2 t2 on t1.intervalstart<=t2.kodenummer and t1.intervalslut>=t2.kodenummer) order by count(t2.id)
Avatar billede eagleeye Praktikant
16. marts 2006 - 14:01 #10
Der skal lige en group by på:

SELECT tabel1.navn, Count(tabel2.id) AS antalsvar FROM tabel1 inner join tabel2 ON tabel2.kodenummer >= tabel1.intervalstart AND tabel2.kodenummer <= tabel1.intervalslut GROUP BY tabel1.navn ORDER BY Count(tabel2.id) DESC;
Avatar billede hehlers Nybegynder
16. marts 2006 - 14:17 #11
Nu begynder det at ligne noget!!!

Det eneste jeg mangler er så (sry havde jeg glemt) et felt i tabel 1 der hedder afdeling, hvis jeg også skal have udskrevet det er det så bare?

SELECT tabel1.navn, tabel1.afdeling??
Avatar billede fennec Nybegynder
16. marts 2006 - 14:20 #12
Ja, men den skal på "group by" listen også:

SELECT tabel1.navn, tabel1.afdeling, Count(tabel2.id) AS antalsvar FROM tabel1 inner join tabel2 ON tabel2.kodenummer >= tabel1.intervalstart AND tabel2.kodenummer <= tabel1.intervalslut GROUP BY tabel1.navn, tabel1.afdeling ORDER BY Count(tabel2.id) DESC;
Avatar billede hehlers Nybegynder
16. marts 2006 - 14:33 #13
Så lærte jeg også noget i dag... Tusind tak for hjælpen til jer begge! Det har været en kæmpe - hjælp!

Er det ok hvis i deler points? i så fald, svarer i så lige?
Avatar billede fennec Nybegynder
16. marts 2006 - 14:36 #14
Helt i orden med mig.
.o) <-- One Eyed Jack
Avatar billede eagleeye Praktikant
16. marts 2006 - 14:54 #15
Ok, her et svar ;)
Avatar billede hehlers Nybegynder
16. marts 2006 - 14:56 #16
tak i to! :)
Avatar billede hehlers Nybegynder
17. marts 2006 - 12:40 #17
Hov, glemte lige en ting, som jeg håber en af jer kan hjælpe mig med...

Jeg har et felt i DB der hedder type. Og jeg skal kun have dem ud hvor type er = 1.

Jeg får en fejl hvis jeg skriver "where type = 1"
Avatar billede fennec Nybegynder
17. marts 2006 - 12:46 #18
"type" er et reserveret ord, så der skal [] omkring:
where [type] = 1
Avatar billede hehlers Nybegynder
17. marts 2006 - 12:53 #19
feltet hedder KortTildelingType :)
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