Avatar billede jeffe Nybegynder
17. august 2003 - 16:06 Der er 6 kommentarer og
1 løsning

MySQL: Modsat valg

Ved ikke rigtigt hvad jeg skal kalde det andet end modsat valg:

Jeg har en bruger-tabel, en spørgsmål-tabel og en svar-tabel, hvor bruger-id og spørgsmåls-id gemmes sammen.

Brugere:
brugerid
og flere

Spørgsmål:
spmid
kategori
og flere

Svar:
brugerid
spmid
rigtigt/forkert


Antag at brugerid 1 skal se på alle spørgsmål med kategori "Film" han IKKE har svaret på. Dvs hvor der ikke findes en record i Svar hvor brugerid 1 har med et spmid hvor kategori er "Film". Jeg kan sagtens finde dem der er besvaret af den bruger i den kategori ved at skrive:

sql = "SELECT * FROM spms, svar where spms.id = svar.spmid and spms.kategori = '" & Request.querystring("kategori") & "' and svar.brugerid =  '" & session("brugerid") & "'"

Eller deromkring :D
Jeg vil sådan set bare have det resultat "inverteret" så at sige...
Avatar billede virus Nybegynder
17. august 2003 - 16:15 #1
SELECT *
FROM spms AS sp, svar AS sv
WHERE sp.id = sv.spmid
AND sp.kategori = '" & Request.QueryString("kategori") & "'
AND NOT sv.brugerid = '" & Session("brugerid") & "'"
Avatar billede virus Nybegynder
17. august 2003 - 16:18 #2
Naa lad os lave det på den her måde

strKategori = Replace(Request.QueryString("kategori"), "'", "''")
strBrugerID = Session("brugerid")

SELECT * FROM spms, svar WHERE spms.id = svar.spmid AND spms.kategori = '" & strKategori & "' AND NOT svar.brugerid = '" & strBrugerID & "'"
Avatar billede jeffe Nybegynder
17. august 2003 - 16:19 #3
jeg forstår selvfølgelig din AND NOT :)

Men hvorfor bruger du AS? Altså, er det "abre til forkortelse i selve sql-sætningen, eller ligger der mere i det ?
Avatar billede arne_v Ekspert
17. august 2003 - 16:31 #4
Jeg ville prøve med:

sql = "SELECT * FROM spms LEFT JOIN svar ON spms.id = svar.spmid WHERE spms.kategori = '" & Request.querystring("kategori") & "' AND svar.brugerid <> '" & session("brugerid") & "'"
Avatar billede arne_v Ekspert
17. august 2003 - 16:31 #5
Det må være absolut nødvendigt at bruge LEFT JOIN i.s.f. INNER JOIN.
Avatar billede jeffe Nybegynder
17. august 2003 - 16:43 #6
Jeg kigger på det lidt senere. Jeg skal nok vende tilbage (skrev bare lige for at ville vide at jeg ikke havde glemt jer).
Avatar billede jeffe Nybegynder
25. august 2003 - 23:56 #7
Tak for hjælpen, og undskyld ventetiden...
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