Avatar billede ravnkilde Nybegynder
14. marts 2006 - 22:18 Der er 11 kommentarer og
1 løsning

SQL - Select enten Ja eller Nej fra to felter i database

Hej!

Jeg har en database med felterne Q58 og Q59 hvor indholdet enten kan være Ja eller Nej. Jeg skal have indholdet trukket ud og har forsøgt med nedenstående SQL-kode, der giver en syntaksfejl.

Nogen, der kan løse mit problem?


--- kode start ---

strSQL = "SELECT * FROM Games WHERE Q58 AND Q59 as Q58 Like 'Ja' OR 'Nej' where GameID="& Session("GameID")
Set rs4 = myConn.Execute(strSQL)
Response.Write "<p>Der er svaret " & rs4("Q58") & " til spørgsmål 4"

--- kode slut ---
Avatar billede eagleeye Praktikant
14. marts 2006 - 22:27 #1
Som jeg læser sprøgsmål så skal både Q58 og Q59 være udfyldt med enten ja eller nej så prøv sådan her, der er også kommet to Where i din SQL der må kun være en Where:

strSQL = "SELECT * FROM Games WHERE (Q58 = 'Ja' OR Q58 = 'Nej') AND (Q59 = 'Ja' OR Q59 = 'Nej') AND GameID="& Session("GameID")


Alternativt kan du også prøvet noget i stil med dette men spørgsmålet er om det er lettere at læse:

strSQL = "SELECT * FROM Games WHERE (Q58 in ('Ja','Nej')) AND (Q59 in ('Ja','Nej')) AND GameID="& Session("GameID")
Avatar billede ravnkilde Nybegynder
14. marts 2006 - 22:30 #2
eagleeye: Q58 indeholder ja-svaret og Q59 indeholder brugerens nej-svar. Dvs. Q58 og Q59 dækker over ét spørgsmål med kun et svar - og derfor vil der enten være svar i Q58 (ja) eller Q59 (nej).

Ændrer det noget ved din SQL?
Avatar billede eagleeye Praktikant
14. marts 2006 - 22:33 #3
Ja hivs der kun er noget i enten Q58 eller Q59 ændre det på SQL sætningen.

Hvis der så altid enten er 'Ja' i Q58 eller 'Nej' i Q59 vil den se sådan her:

strSQL = "SELECT * FROM Games WHERE (Q58 = 'Ja' OR Q59 = 'Nej') AND GameID="& Session("GameID")
Avatar billede eagleeye Praktikant
14. marts 2006 - 22:34 #4
Hvis Q58 kan indeholde enten 'Ja' eller 'Nej' skal den rettes lidt.
Avatar billede cyberkox Nybegynder
14. marts 2006 - 22:35 #5
Du kan vel også bare bruge en simpel IF sætning:

strSQL = "SELECT * FROM Games WHERE GameID = "& Session("GameID")

if (rs("Q58") = "ja" and rs("Q59") = "ja") then
Response.Write "<p>Der er svaret Ja til spørgsmål 4</p>"
elseif (rs("Q58") = "nej" and rs("Q59") = "nej") then
Response.Write "<p>Der er svaret Nej til spørgsmål 4</p>"
else
Response.Write "<p>Der er svaret både ja og nej ti spørgsmål 4</p>"
end if
Avatar billede ravnkilde Nybegynder
14. marts 2006 - 22:39 #6
eagleeye: hvordan skal denne linie så se ud:

Set rs4 = myConn.Execute(strSQL)
Response.Write "<p>Der er svaret " & rs4("Q58") & " til spørgsmål 4"

- i forhold til din SQL

Jeg ønsker at kunne skrive om brugeren har valgt ja eller nej...
Avatar billede ravnkilde Nybegynder
14. marts 2006 - 22:40 #7
svar til eagleeye 14/03-2006 22:34:22

Q58 kan kun indeholde Ja, medens at Q59 kun kan indeholde Nej.
Avatar billede eagleeye Praktikant
14. marts 2006 - 22:40 #8
Hvis den ene kolonne altid er tom kan du udskrive Q58 og Q59 efter hinanden:

Response.Write "<p>Der er svaret " & rs4("Q58") & rs4("Q59") " til spørgsmål 4"
Avatar billede eagleeye Praktikant
14. marts 2006 - 22:44 #9
I den sidte manger der lige et & før " til spørgmål 4"

Alternativt kan du få svaret via SQL sætningen i en nu alias kolonne:

strSQL = "SELECT IIF(Q58 = 'Ja' ,'Ja', 'Nej') as svar, * FROM Games WHERE (Q58 = 'Ja' OR Q59 = 'Nej') AND GameID="& Session("GameID")


Response.Write "<p>Der er svaret " & rs4("svar") & " til spørgsmål 4"
Avatar billede ravnkilde Nybegynder
14. marts 2006 - 22:46 #10
eagleeye: Det virker - jeg skulle dog lige indsætte et & efter rs4("Q59").
Avatar billede ravnkilde Nybegynder
14. marts 2006 - 22:48 #11
Tak for hurtig hjælp, eagleeye!

Også tak til cyberkox - jeg nåede dog ikke at afprøve dit forslag, men tak.
Avatar billede eagleeye Praktikant
14. marts 2006 - 22:51 #12
Tak for point :)
Lige en lille retelse til den sidste SQL (14/03-2006 22:44:28). Hvis du prøver den på et tidspunkt så vil den også skrive 'Nej' hvis der ingen svar er på sprøgsmålet så den skal rettes så den tager indholdet af Q58 eller Q59:

strSQL = "SELECT IIF(Q58 = 'Ja' ,Q58, Q59) as svar, * FROM Games WHERE (Q58 = 'Ja' OR Q59 = 'Nej') AND GameID="& Session("GameID")
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