webForumDet fria alternativet

Inner Join ID

3 svar · 213 visningar · startad av mattiasnordin

mattiasnordinMedlem sedan maj 20012 080 inlägg
#1

Hello...

Jag ställer följande fråga mot en access97 databas. Det jag nu vill få ut är ID nummret ur tabellen "staffinfo"...

SELECT staffinfo.*, settings_office.* FROM staffinfo INNER JOIN settings_office ON staffinfo.Office_Location = settings_office.Office_Location WHERE staffinfo.Firstname LIKE 'Mattias%'

Hur fungerar det när två tabeller joinats och båda innehåller en kolumn med samma namn? Kolumnt "ID" finns i båda tabellerna.

När jag printar ut ID ur min rs så får jag ID värdet ur ""fel"" tabell.

<%=rsStaff("ID")%>

Kör jag frågan manuellt i access så lägger access till tabellnamnet innan kolumnrubriken. Detta verkar inte gå att få fram i min Record Set ?"!

Är det någon som kan förklara vad som händer här... :OO

mattiasnordinMedlem sedan maj 20012 080 inlägg
#2

Grrrr.... Detta borde gå att få att funka tycker jag...

Om jag dumpar ut min record set i en array och printar ut rubb och stubb så ser jag att ID nummret i tabellen "staffinfo" finns där. MEN hur accessar jag den informationen med en vanlig <%= rsUpdate("ID") %> ???

Så här dumpar jag ut samma fråga som ovan (vilket fungerar):

<%
'***** Skapar Connection-objektet *****'
Set connect = Server.CreateObject("ADODB.Connection")
'***** Specifierar sökvägen *****'
MdbFilePath = Server.MapPath("/staffdatabase/newstaffdatabase.mdb")
'***** öppnar databasen *****'
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
%>

<% 	
	sql = "SELECT staffinfo.*, settings_office.* FROM staffinfo INNER JOIN settings_office ON staffinfo.Office_Location = settings_office.Office_Location WHERE staffinfo.Firstname LIKE 'mattias%' "
	response.write "<hr>" &sql &"<hr>"
	set rsUpdate = connect.execute(sql)
  %>	

<!--- Arkivera följande --->
<%
Dim myArray
	myArray = rsUpdate.GetRows()

	rsUpdate.close
	set rsUpdate= nothing
	connect.Close
	set connect = nothing

AntaletKolumner = ubound(myArray,1)
AntaletRader = ubound(myArray,2)
Response.Write "<table border =1>"

' Rubrikerna
For i = 0 to AntaletKolumner
Response.Write "<td bgcolor=eeeeee>" & i 
Response.Write "</td>"
next

for vA = 0 to AntaletRader
' Rader
response.write "<tr>"
	for vB = 0 to AntaletKolumner
	Response.Write "<td>"
	response.write myArray(vB,vA)
	Response.Write "</td>"
	Next
response.write "</tr>"
next

Response.Write "</table>"
%>

Men det skulle vara mycket enklare, och snyggare, om det var möjligt att printa ut värdet direkt med <%= rsUpdate("ID") %>.
Please give me som info...

Mvh

@ndersMedlem sedan juni 200032 969 inlägg
#3

Om du har flera fält som heter likadant får du ge fälten alias. Dvs, du får specificera ett namn i SQL-frågan. Om du inte vill specificera alla fält i tabellen, så kan du använda * också, om du kan leva med att du får med id två gånger.

Exempel:

sql = "SELECT staffinfo.ID As StaffID, staffinfo.*, settings_office.ID as SettingsID, settings_office.* FROM staffinfo INNER JOIN settings_office ON staffinfo.Office_Location = settings_office.Office_Location WHERE staffinfo.Firstname LIKE 'mattias%' "

Sedan hämtar du ut mha de alias du specificerat i frågan.

<% = RSUpdate("StaffID") %>

Mvh,

mattiasnordinMedlem sedan maj 20012 080 inlägg
#4

Tack anders. Lärde mig något nytt i dag också!

Det där var (för mig) lite långsökt. Tackar för hjälpen. Det fungerar!

Hade tagit åratal innan jag skulle ha testat mig fram till detta ;)

129 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)