webForumDet fria alternativet

Koppla ihopp tabeller

10 svar · 340 visningar · startad av Wiklund!!

Wiklund!!Medlem sedan juli 2002549 inlägg
#1

Har sökt lite här i wF om join, får dock inte det jag vill att fungera. Jag har omstrukturerat min databas lite. Har en tabell som heter users där jag sparar alla uppgifter om medlemmarna. Sen i de övriga tabellerna, guestbook, messages, forum osv sparar jag bara användarens id som gjort posten.

Nu till problemet: Jag vill koppla ihopp tabellerna. Hör hört talas om att jag ska använda begreppet Join.

Jag tror ni fattar vad jag menar. Någon som har lust att hjälpa mig.

ps. Sorry för att jag frågar så mkt :D

Fredde MannenMedlem sedan nov. 20014 054 inlägg
#2

Alltså du vill plocka ut inlägg i ex. gästboken för ex. användar-id 1200?
så här har jag gjort, istället för att använda join!

SQL="SELECT * from tabellnamn WHERE column=" & AnvID & ""
Wiklund!!Medlem sedan juli 2002549 inlägg
#3

Ja ungefär. Fast i tabellen guestbook har jag ju gästboksinlägget och ID:et från den medlem som gjort inlägget.
Så jag måste koppla ihopp två tabeller.

Fredde MannenMedlem sedan nov. 20014 054 inlägg
#4

det du kan göra är att du har en extra column i gusetbook, typ PID som är den användare som äger gästboken!

Så när de går till sin gästbok,

AnvID = Request.Cookie("AnvID")
SQL = "SELECT * from guestbook WHERE PID=" & AnvID & ""

Eller någe sådant!!! =)

Wiklund!!Medlem sedan juli 2002549 inlägg
#5

Nej.. Vill inte använda cookies. Är nästan säker på att det går att lösa på ett bättre sätt.

NickemannenMedlem sedan aug. 20003 575 inlägg
#6

Jag tror jag vet vad du menar har själv byggt communitys förr.

Vi säger att din medlems Tabell heter "Usr", Och Medlems Id är "usr_id".

Gästboken heter "gst". I gästboken måste du ha följande fält.

gst_id 'räknare 'inlägg id:t
gst_usr_id ' nvarchar eller textfält, kan vara int om du använder nummer ' Talar om vad ägarens id är
gst_author_usr_id 'nvarchar eller textfält, kan vara int om du använder nummer ' Talar om vilken medlem som skrivit i din gästboken
gst_message ' Text eller nText själva meddelandet
gst_date ' Datum ' När inlägget skrevs.

Usr:
usr_id ' medlems id:t
usr_nick 'medlemens nickname

Du skickar medlems id:t till .asp?id=[id:t]
Om du tittar i sql satsen så får du skriva ' ' om det skall vara en sträng eller ta bort ' ' runtom strGuest id om det är tal du har i din räknare.

[red]
Dim strSql, Rs, Conn, strSession, strGuestid

Function FixChars(strFix)
FixChars = Replace(strFix,"'","''")

End Function

// Conn = DatabasKoppling
strGuestid = FixChars(Request.Querystring("id"))

strSql = "Select * From usr,gst where gst_usr_id = '"& strGuestid &_
"' and gst.gst_usr_id = usr.usr_id order by gst_date desc"
Set Rs = Conn.Execute(strSql)

Do Until Rs.Eof

Response.Write "Från: "&Rs("usr_nick")&" Skickat: "&Rs("gst_date") &_
"<br>"&Rs("gst_message")&"<br><hr><br>"

Rs.MoveNext
Loop
[/red]

OBS! Det kan finnas fel i koden jag har inte testat den. Men du ser hur jag har lagt upp det.

Ett tips är att söka på paging så hittar du hur du kan dela upp sök resultaten så det blir 10 för varje sida.

Men ett tips använd inte RecordSet då det oftast slöar ner.
Man kan göra paging utan det

Fredde MannenMedlem sedan nov. 20014 054 inlägg
#7

Nej.. Vill inte använda cookies. Är nästan säker på att det går att lösa på ett bättre sätt.

Så klart det går, sessioner! :e

Hur som helst måste du ha en column för användaren och en för besökaren! Annars blir det konstigt! :OO

TobbsterMedlem sedan mars 2001309 inlägg
#8

Om du vissar din databas struktur så kan vi nog hjälpa dig med SQL frågrna.

Men det här inlägget borde vara i SQL forumet.

LarsGMedlem sedan dec. 200012 464 inlägg
#9

flyttad från asp

Wiklund!!Medlem sedan juli 2002549 inlägg
#10

Ampy hjälpde mig! Fick till det.

<%
sql = "select t1.*, t2.* from users t1 inner join logins t2 on t1.id = t2.fromid order by 1 desc"
%>

Går det att lägga till Count i koden. Ampy var tveksam om det gick.

Engine^Medlem sedan dec. 20003 887 inlägg
#11

Gissar på att du stoppar svaret i ett RecordSet och då kan du ju använda dig utav .RecordCount för att få veta hur många rader frågan gav.

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