Avatar billede jeffe Nybegynder
15. august 2003 - 14:41 Der er 13 kommentarer og
2 løsninger

SQL-sætninger

Jeg sidder med et problem. Jeg aner ikke hvordan jeg skal trække det data ud jeg ønsker. Jeg har disse tabeller:

Brugere:
brugerid
navn osv.

Spørgsmål:
spmid
kategori
spørgsmål, svar osv.

Afgivne svar:
brugerid
spmid
rigtigt (ja/nej)


Altså en brugertabel med brugerdata (login m.m.), en spørgsmålstabel (hvor der er spørgsmål, kategori, svarmuligheder og hvad det rigtige svar er) og en svar-tabel hvor der gemmes id's så de kan sammenlignes (brugerid = 1, spmid = 1, rigtigt= ja. Bruger 1 har svaret rigtigt på spm 1).

Mit problem er at jeg ikke aner hvordan jeg på en spørgsmålsoversigt kan vise hvor mange spørgsmål i hver kategori, der ikke er svaret på. Altså, en bruger logger ind. Han har brugerid 1. Han har svaret på 5 af 10 spørgsmål i kategori 1, og 4 af 10 i kategori to. Det skal vises, at der er 5 tilbage i kategori 1, og 6 i kategori 2.
Men det indebærer at brugerens id slås op i svar-tabellen og alle spmid findes hvor brugerid = 1. Derefter skal alle disse spmid's åbnes og tjekkes i kategori. Derudover skal der tjekkes hvor mange der er i kategorierne i det hele.

Hvordan fa'en løser jeg det ?
Avatar billede -thomas- Nybegynder
15. august 2003 - 14:56 #1
hmm. noget lign: kræver du har brugerens id gemt i Session("brugerid")

SELECT spg.* FROM spg LEFT JOIN svar ON spg.spmid = svar.spmid WHERE svar.rigtigt = '" & "ja" & "' AND svar.brugerid = " & Session("brugerid") & ""
Avatar billede -thomas- Nybegynder
15. august 2003 - 14:58 #2
hmm..den løser ikke hele dit problem, nu jeg læser det ordentligt igennem. den finder bare antallet af rigtige svar for en bruger.
Avatar billede jeffe Nybegynder
15. august 2003 - 15:02 #3
heh, jeg har brugerid i en session ja. Og der skal jo heller intet gemmes i bruger-tabellen
Avatar billede jeffe Nybegynder
15. august 2003 - 15:03 #4
Der er 50 point til dig, hvis du gider forklare left join, inner join og hvad der ellers er. Har jeg aldrig fattet... :D
Avatar billede jeffe Nybegynder
15. august 2003 - 15:10 #5
Hey hey, jeg tror faktisk jeg har fundet løsningen...
Avatar billede -thomas- Nybegynder
15. august 2003 - 17:11 #6
sorry, var ikke lige ved computeren. skal jeg forklare noget eller hvad?
Avatar billede -thomas- Nybegynder
15. august 2003 - 17:13 #7
Det LEFT JOIN gør her, er at den kun henter poster ud hvor spmid'et i spørgsmålstabellen er lig spmid'et i svartabellen. Og ud af dem henter den kun den aktuelle brugers svar og dem som er svaret rigtigt på.
Avatar billede jeffe Nybegynder
15. august 2003 - 17:14 #8
Nej, det behøver du ikke alligevel. Jeg er med på det nu. Ganske brugbart. Aner ikke hvordan jeg har kunnet klare mig uden join :D
Avatar billede -thomas- Nybegynder
15. august 2003 - 17:15 #9
Avatar billede -thomas- Nybegynder
15. august 2003 - 17:16 #10
Nej, det bliver man hurtigt afhængig af... Før jeg lærte det at kende måtte jeg løbe den ene tabel igennem og for hvert svar, checke i andre tabeller. Så bliver applikationen altså meget hurtigt meget langsom!!! :)
Avatar billede jeffe Nybegynder
17. august 2003 - 16:00 #11
Håber det var ok med bare 50 point
Avatar billede -thomas- Nybegynder
17. august 2003 - 20:08 #12
Ja, tak for point! Fik du løst som du helt som du ville have det?
Avatar billede jeffe Nybegynder
17. august 2003 - 20:14 #13
Jaeh, men det første mig jo bare hen til næste problem, heh.
Jeg er dog i dag gået igang med at læse lidt fra wc3shools.com om korrekt kodning. Samtidig med at jeg får det hele genopfrisket. HTML/XHTML/CSS/ASP/SQL
Så derefter burde jeg være i stand til at fortsætte uden de hele store problemer.
Avatar billede -thomas- Nybegynder
17. august 2003 - 20:38 #14
Ja det er en kanon side med enkle, forståelige eksempler. held og lykke med det :)
Avatar billede jeffe Nybegynder
17. august 2003 - 23:09 #15
Mange tak. Og tak for din tid !
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