09. august 2005 - 13:18Der er
32 kommentarer og 1 løsning
udskriv kun id en gang
Jeg har følgende kode som skal skrive nogle spørgsmål til brugeren med to eller flere svarmuligheder. Mit spørgsmål er om der er en der kan fortælle mig hvordan jeg undgår at udskrive spørgsmålet mere end en gang.
På forhånd tak for hjælpen.
<% Set rs = Server.CreateObject("ADODB.Recordset") rs.Open "SELECT spoergsmaal.*, svar.* FROM svar INNER JOIN (spoergsmaal INNER JOIN spmsvar ON spoergsmaal.spmid = spmsvar.spmid) ON svar.svarid = spmsvar.svarid", database,3,1,1
nu har jeg nørklet lidt med det er kommet frem til denne sql:
rs.Open "SELECT spoergsmaal.spoergsmaal, svar.svar, spmsvar.spmid FROM svar INNER JOIN (spoergsmaal INNER JOIN spmsvar ON spoergsmaal.spmid = spmsvar.spmid) ON svar.svarid = spmsvar.svarid group by spoergsmaal", database,3,1,1
og får denne fejlmeddlelse: Du har forsøgt at køre en forespørgsel, der ikke medtager det angivne udtryk "svar" som en del af en aggregatfunktion.
når du laver group by så skal den jo have noget at forholde sig til Derfor skal du lave group by på alle de felter du selecter så den ved i hvilken rækkefølge du skal gøre det
rs.Open "SELECT spoergsmaal.spoergsmaal, svar.svar, spmsvar.spmid FROM svar INNER JOIN (spoergsmaal INNER JOIN spmsvar ON spoergsmaal.spmid = spmsvar.spmid) ON svar.svarid = spmsvar.svarid group by spoergsmaal.spoergsmaal, svar.svar", database,3,1,1 --' Så bliver de først grupperet efter spørgsmål, dernæst svar
hmm... med denne sql: rs.Open "SELECT spoergsmaal.spoergsmaal, spoergsmaal.spmid, svar.svar, spmsvar.spmid FROM svar INNER JOIN (spoergsmaal INNER JOIN spmsvar ON spoergsmaal.spmid = spmsvar.spmid) ON svar.svarid = spmsvar.svarid GROUP BY spoergsmaal.spoergsmaal, svar.svar", database,3,1,1
siger den: Du har forsøgt at køre en forespørgsel, der ikke medtager det angivne udtryk "spmid" som en del af en aggregatfunktion.
njaa men det er muligt at den skal virke på alle dem man har valg Select Dinstinct * From tabel Er muligt i nogen databaser Men så ser den jo selvfølgelig også samlet på alle fire værdier
Du kunne prøve at sætte det forest -- rs.Open "SELECT Distinct spoergsmaal.spoergsmaal, svar.svar, spmsvar.spmid, spoergsmaal.spmid FROM svar INNER JOIN (spoergsmaal INNER JOIN spmsvar ON spoergsmaal.spmid = spmsvar.spmid) ON svar.svarid = spmsvar.svarid", database,3,1,1 -- hvis det "trigger" at den så vælger distinct på alle felter Men jeg er snart løbet tør for gode ideer desværre
min sidste gode forslag er at du spørger i access kategorien, Der sidder en masse "hajer" som ved alt om access jo, og de kan sikker snildt skrue det rigtig sammen :o)
løkken er fin nok , og hvis du kan få den til at virke så efter din hensigt så er det fint Jeg vil alligevel foreslåg dig at evt stillle spørgsmålet i access kategorien Perfomance er langt langt bedre hvis det hele stykkes sammen i et sql udtryk
Så fik jeg løst problemet... Lavede om på db så jeg fik spmid med i svar-tabellen. Min kode kom til at se sådan her ud hvis andre skulle sidde med samme problem:
Set rs1 = Server.CreateObject("ADODB.Recordset") rs1.Open "SELECT * FROM spoergsmaal", database,3,1,1
If rs1.eof AND rs1.bof Then response.write ("Der er ingen spørgsmål) else spm_count = 0
rs1.MoveFirst DO UNTIL rs1.eof
spmid = rs1("spmid") spm = rs1("spoergsmaal")
response.write (spm)
'viser svarmulighederne Set rs2 = Server.CreateObject("ADODB.Recordset") rs2.Open "SELECT * FROM svar WHERE svar.spmid ="&rs1("spmid"), database,3,1,1
<!--Lukker databasen--> database.Close Set database = Nothing %>
Synes godt om
Ny brugerNybegynder
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.