webForumDet fria alternativet

Inner join

8 svar · 247 visningar · startad av SPinckney

SPinckneyMedlem sedan juli 2002104 inlägg
#1

Tjena,

Jag har 2 tabeller.

tblflags
flagid - flagvalue

flagid = int
flagvalue = varchar

tblusers
username - userflag

username = varchar
userflag=int

Nu vill jag skriva ut userns flagvalue.

Så har tex en user tblusers.userflag= 2

och tblflags.flagid = 2 är värdet tblflags.flagvalue= Administrator


sql = "Select * from tblusers inner join tblflags on tblusers.userflag = tblflags.flagvalue where tblflags.flagid = tblusers.userflag"

Får felet
Syntax error converting the varchar value 'Globaladmin' to a column of data type int.

skymanMedlem sedan juli 20011 347 inlägg
#2

Du jämför en int mot en varchar...
tblusers.userflag = tblflags.flagvalue

LarsGMedlem sedan dec. 200012 465 inlägg
#3

Det hänger inte ihop. Jag ser inget globaladmin i din kod.

Jag förstår inte din join heller, borde det inte räcka med

sql = "Select * from tblusers inner join tblflags on tblusers.userflag = tblflags.flagid "
SPinckneyMedlem sedan juli 2002104 inlägg
#4
sql = "Select * from tblusers inner join tblflags on tblusers.userflag = tblflags.flagid

Detta skriver bara ut värdet "3"

Värdet "3" är globaladmin.
Det är definerat i tblflags.flagvalue

Jag får ju ut att användaren har värdet 3 som flagga men sen vill jag jämföra det värdet med tabellen tblflags.flagid och skriva ut tblflags.flagvalue som i detta fallet är "Globaladmin"

SPinckneyMedlem sedan juli 2002104 inlägg
#5

Ingen som vet?

LarsGMedlem sedan dec. 200012 465 inlägg
#6

Jag förstår nog inte problemet riktigt. I vilket läge får du felmeddelandet?

Kod borde väl se ut så här ungefär

username = "'" & replace(request.form("username"),"'","''") & "'"
sql = "Select * from tblusers inner join tblflags on tblusers.userflag = tblflags.flagid where username = & username
set rs = connect.execute(sql)
if not rs.eof
response.write "Användaren " & rs("username") " har " & rs("flagvalue") & "<br>"
else
response.write "Okänd användare <br>"
end if
SPinckneyMedlem sedan juli 2002104 inlägg
#7

Det va inte riktigt så jag ville ha det. Det är ju samma Sql Query som min.

Om du kollar på denna bild så förstår du vad jag menar.

Detta blir resultatet av

sql = "Select * from tblusers inner join tblflags on tblusers.userflag = tblflags.flagid order by username ASC"

Jag vill ju att det ska stå Globaladmin under "userlevel" istället för "3"

LarsGMedlem sedan dec. 200012 465 inlägg
#8

Hur ser den koden som skriver den bilden ut?

SPinckneyMedlem sedan juli 2002104 inlägg
#9

Det fungerade med det du sa. Bara jag som hade klantat mig på en grej. Men jag gjorde ändå om queryn eftersom jag har markets också.

sql = "Select tblMarkets.marketName, tblusers.*,tblFlags.FlagValue  from (tblusers left join tblflags on tblusers.userflag = tblflags.flagid) left join tblmarkets on tblUsers.userMarket= tblMarkets.marketid order by username ASC"

Sen gjorde jag en Left join om nån skulle ta bort en market.
och använder mig av

Do until Rsusers.EOF

strMarket = rsusers("marketName")
strLevel = rsusers ("flagvalue")

if strMarket = "" or isnull (strmarket) then
	strMarket = "UNKNOWN"
end if

if strLevel = "" or isnull(strLevel) then 
	strLevel = "UNKNOWN"
end if

Tack!

Genererad på 387 ms · cache AV · v20260730165559-full.f96bc7eb