webForumDet fria alternativet

Hämta och skriva ut en relation

ASP

7 svar · 542 visningar · startad av peppar

Medlem sedan dec. 2001873 inlägg
Frågan#1

Problem! Jag har två tabeller som heter och ser ut såhär:

[B]med_origin[/B]: usr_ORIGINID, usr_USRORIGIN, usr_KATEGORI

och

[b]med_kategorier[/b]: usr_KATID, usr_KATEGORI

i den senare tabeller finns fyra poster:

1) odlare, 2) uppfödare, 3) förädlare, 4) matlagare

I den första tabellen finns max fyra poster per användarID. Varje post relatera till tabellen med_kategorier. Alltså, varje användare kan vara knuten till 1,2,3 eller 4 kategorier.

Nu vill jag plocka ut värdena från databasen och skriva ut dom till checkboxar. Beroende på om man tillhör en kategori eller ej så skall checkboxen skrivs ut och markeras med "checked"...

men hur...? Måste det till en JOIN? Hur ser den ut sådana fall för det upplägget på tabeller...

det som styr vilket ID som man skall skriva ut är värdet från en kaka som flyttas till variabeln thisUsrId

Medlem sedan dec. 2001873 inlägg
#2

Man kan göra såhär men det är säkert inte rätt...

"SELECT med_kategorier.*, med_origin.usr_ORIGINID, med_origin.usr_USRORIGIN, med_origin.usr_KATEGORI FROM med_kategorier INNER JOIN med_origin ON med_kategorier.usr_KATID = med_origin.usr_KATEGORI WHERE usr_USRORIGIN  = "& thisUsrId &" "
Medlem sedan dec. 2001873 inlägg
#3

Nej, det verkar inte stämma helt som jag vill... Jag vill kunna skriva ut alla fälten i med_kategorier tabellen så här om en användare inte är relaterad till aktuell kategori i tebellen med_ORIGIN:

response.write "<input name="" [B]usr_kategori[/B] "" type=""checkbox"" value="" [B]usr_KATID[/B] "" /> " [B]usr_KATEGORI[/B] " <br />"

men om användaren är relatera till denna kategori skall det skriva ut såhär:

response.write "<input name="" [B]usr_kategori[/B] "" type=""checkbox"" value="" [B]usr_KATID[/B] ""  ""checked"" /> " [B]usr_KATEGORI[/B] " <br />"

Just nu ser det ut så här:

do until rs.eof

	if rs("med_origin.usr_USRORIGIN") = thisUsrId then  
		response.write "<input name=""usr_kategori"" type=""checkbox"" value=""?"" /> "&rs("med_origin.usr_KATEGORI")&" <br />"
	else
		response.write "<input name=""usr_kategori"" type=""checkbox"" value=""?"" ""checked"" /> "&rs("med_origin.usr_KATEGORI")&" <br />"
	end if
					
rs.movenext
loop
Medlem sedan dec. 200012 464 inlägg
#4
q = "SELECT med_kategorier.usr_kategori, " & _
          " case when med_origin.usr_ORIGINID is not null then 'checked' else '' end as checked " & _
     " FROM med_kategorier left JOIN med_origin " & _
       " ON med_kategorier.usr_KATID = med_origin.usr_KATEGORI " & _
    " and usr_USRORIGIN  = " & thisUsrId
Medlem sedan dec. 2001873 inlägg
#5

Får ett felmeddelande. (odefinierat fel) frågan ser ut såhär utskrift...

SELECT med_kategorier.usr_kategori, case when med_origin.usr_ORIGINID is not null then 'checked' else '' end as checked FROM med_kategorier left JOIN med_origin ON med_kategorier.usr_KATID = med_origin.usr_KATEGORI and usr_USRORIGIN = 1

det är en access databas...

Medlem sedan dec. 20003 887 inlägg
#6

case else finns inte i Access. Istället kan du nog använda dig av IIF

...iif( med_origin.usr_ORIGINID is not null, 'checked', '' ) as checked...
Medlem sedan dec. 2001873 inlägg
#7

hmm. Provade med iif men får fortfarande odefinierat fel i frågan...

Medlem sedan dec. 2001873 inlägg
#8

Jag får säkert stryk om jag visar hur jag (tror) jag löste det... :r
Eller inte löste det... Det här går ju inte heller, men det är något hitåt jag vill...

sql1 =	"SELECT * from med_origin where usr_USRORIGIN = "& thisUsrId 
set rs1 = conndb1.execute(sql1)

sql2 =	"SELECT * from med_kategorier"
set rs2= conndb1.execute(sql2)
	
			
do until rs2.eof
	recset2 = rs2("usr_KATID")
	
		do until rs1.eof
			recset1 = rs1("usr_KATEGORI")
			rs1.movenext
		loop
			
	if recset2  = recset1 then
		response.write "<input name=""usr_kategori"" type=""checkbox"" value="""&rs2("usr_KATID")&""" /> "&rs2("usr_KATEGORI")&" <br />"
	else
		response.write "<input name=""usr_kategori"" type=""checkbox"" value="""&rs2("usr_KATID")&""" ""checked"" /> "&rs2("usr_KATEGORI")&" <br />"
	end if	
rs2.movenext
loop
292 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
118 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
159 ms — ändringar (db)