webForumDet fria alternativet

Inner join

Databaser & SQL

8 svar · 249 visningar · startad av SPinckney

Medlem sedan juli 2002104 inlägg
Frågan#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.

Medlem sedan juli 20012 450 inlägg
#2

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

Medlem sedan dec. 200012 464 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 "
Medlem 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"

Medlem sedan juli 2002104 inlägg
#5

Ingen som vet?

Medlem sedan dec. 200012 464 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
Medlem 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"

Medlem sedan dec. 200012 464 inlägg
#8

Hur ser den koden som skriver den bilden ut?

Medlem 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!

262 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)