webForumDet fria alternativet

Hämta från två olika tabeller

ASP

10 svar · 366 visningar · startad av magnusfernstrom

Medlem sedan mars 20033 686 inlägg
Frågan#1

hejsan!
Hur gör jag så att jag kan hämta data från två olika tabeller?
Alltså hur ska min databas koppling se ut samt hur skall min SQL sats se ut?

Det är så att jag hämtar först meddelanden från en tabell i databasen, men jag vill sedan h'mta användarnamn från en anna tabell i databasen.

Men jag vill ju inte skapa en helt ny databas koppling i den första databas kopplingen, om ni förstår vad jag menar :)

Dåligt förklarat?

Medlem sedan maj 20018 027 inlägg
#2

Tex:

select m.meddelande, u.username
from messages m, users u
where m.userid=u.userid
Medlem sedan mars 20033 686 inlägg
#3

UlfT, jag är både trög och väldigt lat + att att jag just nu är trött.

Men om jag ska ändra koden så den passar in till denna databas koppling, hur ska det det då se ut?

Set db = Server.CreateObject("ADODB.Connection")
db.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("users.mdb")
SQL = "SELECT * FROM meddelanden WHERE To = '" & Session("userID") & "'"
Set rs = db.Execute(SQL)
Medlem sedan mars 20025 907 inlägg
#4
Set db = Server.CreateObject("ADODB.Connection")
db.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("users.mdb")
SQL = "SELECT meddelande, rubrik, user FROM meddelanden , usertabell WHERE To = '" & Session("userID") & "' and usertabell.id = meddelanden.id"
Set rs = db.Execute(SQL)

Typ

Medlem sedan mars 20033 686 inlägg
#5

Okej Peeer då förstår jag lite :)
Men om jag lixom vill hämta alla data ur alla tabeller för att sedan kunna skriva ut från de olika tabellerna lite här och var på sidan, hur gör jag då?

<%
If Session("inloggad") = "ja" Then
Set db = Server.CreateObject("ADODB.Connection")
db.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("users.mdb")
SQL = "SELECT * FROM meddelanden WHERE To = '" & Session("userID") & "'"
Set rs = db.Execute(SQL)
Do until rs.EOF
%>
<a href="message.asp?MID=<%=rs("MID")%>"><%=rs("Rubrik")%></a>
<br>
<br>
<%
rs.MoveNext
Loop

Else
Response.Redirect "login.asp"
End If
%>

Går det typ inte och skriva nåt i stil med

<%=rs("Meddelanden.Rubrik")%>

Ja.....

:)

Medlem sedan mars 20025 907 inlägg
#6

Nja, du använder fortfarande bara kolumnnamnet när du skriver ut

<%=rs("Rubrik")%>

. Om du har 2 kolumner som heter likadant i tabellerna kan du använda dig av alias

select meddelanden.rubrik as rubrik1, tabell.rubrik as rubrik2 osv..
Medlem sedan mars 20033 686 inlägg
#7

Hmmmm okej.
Får testa lite då :)

Återkommer om problem uppstår.

/Magnus

Medlem sedan mars 20033 686 inlägg
#8

Hmmm...
När jag skriver ut meddelandets rubrik och ID så är det inga problem. Men när jag ska skriva vem det är från är det problem :)

I Tabellen meddelanden så står det nämligen avsändarens ID istället för användarnamn.

Men jag vill ju inte att det står Från: 3.
Hur gör jag för att byta ut trean mot det användarnamn som har ID 3 i user tabelllen?

Medlem sedan mars 20033 686 inlägg
#9

....och så här ser koden ut:

<%
If Session("inloggad") = "ja" Then
Set db = Server.CreateObject("ADODB.Connection")
db.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("users.mdb")
SQL = "SELECT * FROM meddelanden WHERE To = '" & Session("userID") & "'"
Set rs = db.Execute(SQL)
Do until rs.EOF
%>
<a href="message.asp?MID=<%=rs("MID")%>"><%=rs("Rubrik")%></a>
<br>
Från: <%=rs("Fran")%>
<br>
<%
rs.MoveNext
Loop
Else
Response.Redirect "login.asp"
End If
%>
Medlem sedan dec. 20003 887 inlägg
#10

Något i den här stilen, men jag listade aldrig ut vad dina kolumnnamn var, så dom får du ju ändra till.

If Session("inloggad") = "ja" Then
  Set db = Server.CreateObject("ADODB.Connection")
   db.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("users.mdb")

  SQL = "SELECT MID, Rubrik, username FROM meddelanden m INNER JOIN users u ON u.id = m.id " & _
        "WHERE To = " & Session("userID")
  Set rs = db.Execute(SQL)

  Do until rs.EOF
    Response.Write "<a href=""message.asp?MID=" & rs("MID") & """>" & rs("Rubrik") & "</a><br>"
    Response.Write "Från: " & rs("username") & "<br>"

    rs.MoveNext
  Loop
Else
  Response.Redirect "login.asp"
End If
Medlem sedan mars 20033 686 inlägg
#11

Okej, tack så mycket för hjälpen allihopa!

266 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)