11. januar 2004 - 06:29Der er
23 kommentarer og 1 løsning
Dubletter mellem 2 tabeller ønskes vist
Hvordan får jeg udtrukket data fra to tabeller og tjekket om værdierne er ens?
Jeg har rodet noget med det men kan ikke hittet ud af det. Jeg har prøvet noget ala dette:
Set rs = Conn.Execute("SELECT * FROM bruger") Set rss = Conn.Execute("SELECT * FROM logsession") Dim ses, sess Response.Write(Session.SessionID) & " er på nu" & "<br><br>" Do While Not rs.Eof ses = rs("SessionID") If ses <> "" Then Response.Write ses & " " Response.Write("ONLINE")& "<br>" End if Do While Not rss.Eof sess = rss("SessionID") If sess <> "" Then Response.Write(sess) & " online fra logsession" & "<br><br>" End if rss.MoveNext Loop rs.MoveNext Loop rs.Close rss.Close
Det er selvfølgelig den tilbagevendende "hvem er på" problemstilling
Første table (rs) indeholder Bruger information inkl. SessionID da sessionen blev oprettet.
Anden tabel (rss) indeholder SessionID fra global.asa.
Hvis SessionID i rs tabellen også eksistere i rss tabellen så er Brugeren's session stadigvæk aktiv. Dette er min problemstiling, jeg ved ikke hvordan jeg skal gribe det an at få kontrolleret tabellerne mod hinanden.
Du kan ikke sige at hele tabellerne skal være ens, du er nødt til fx at sige du vil finde Brugernavn fra bruger hvor ID er det samme som logsession ID og omvendt:
Set RS = Server.CreateObject("ADODB.Recordset") SQL = "Select bruger.Brugernavn, logsession.Log From From bruger, logsession Where bruger.ID=logsession.ID" RS.Open SQL, Conn, 3, 3
If Not RS.EOF Then Response.Write("Online") Else Response.Write(Session.SessionID) End If
tabel 1: db feltnavn: SessionID db værdi 1: 12345 db værdi 2: 12346 db værdi 3: 12347 db værdi 4: 12348 db værdi 5: 12349
så kan jeg ikke sammenligne de 5 poster med tabel 2?
tabel 2: db feltnavn: SessionID db værdi 1: 0 db værdi 2: db værdi 3: 12345 db værdi 4: 15 db værdi 5: 12346 db værdi 6: db værdi 7: db værdi 8: 34 db værdi 9: 12348 osv...
Og der hvor der er ens tal skal der skrives Online ud for en bruger, eller et andet felt sættes til True.
Du kan ikke sige at hele tabellerne skal være ens, du er nødt til fx at sige du vil finde Brugernavn fra bruger hvor ID er det samme som logsession ID og omvendt:
Set RS = Server.CreateObject("ADODB.Recordset") SQL = "Select * From bruger,logsession Where bruger.ID=logsession.ID" RS.Open SQL, Conn, 3, 3
If Not RS.EOF Then Response.Write("Online") Else Response.Write(Session.SessionID) End If
For at se fejl: Funktioner > Internetindstillinger > Avanceret > Du fjerner nu fluebenet fra feltet "Vis meddelelser om uskadelige HTTP-fejl > Tryk nu OK og kør din kode igen! (taget fra www.frip.dk)
Jeg gemmer Session.SessionID i en tabel via global.asa, når så en Bruger logger på sitet så gemmes hans Session.SessionID i bruger-tabellen under hans Bid.
Dvs at jeg har to tabeller (logsession og bruger) med samme Session.SessionID nr som jeg gerne vil bruge til at vise at hans session er aktiv. Dette gælder så for alle loggede ind hvis bruger-Session.SessionID er = logsession-Session.SessionID.
Jeg har lige prøvet denne:
Set RS = Server.CreateObject("ADODB.Recordset") SQL = "Select bruger.nick From bruger, logsession Where bruger.SessionID=logsession.SessionID" RS.Open SQL, Conn, 3, 3
men fejlen er Data Types mismatch in critiria expression.
Set RS = Server.CreateObject("ADODB.Recordset") SQL = "Select bruger.nick From bruger Where bruger.SessionID=logsession.SessionID" RS.Open SQL, Conn, 3, 3 Do While Not rs.Eof Response.Write rs("nick") rs.Movenext loop rs.Close
Set RS = Server.CreateObject("ADODB.Recordset") SQL = "Select bruger.SID From bruger, logsession Where bruger.SID=logsession.SessionID AND bruger.BrugerOnline='True'" RS.Open SQL, Conn, 3, 3 Do While Not rs.Eof Response.Write rs("SID") rs.Movenext loop rs.Close
jeg har løst den. Koden var korrekt når fejlen var mismatch men så manglede jeg at tabelfelterne skulle være af samme type, det blev rettet til tal og nu virker det....
Heh.. sidder også tit i lang tid og prøver at løse et problem og så opdager jeg at problemet var et helt andet og ganske enkelt :\
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.