mozillaMedlem sedan juli 20011 084 inlägg Jag behöver lite hjälp, jag har en mySQL databas som är uppbyggd av två tabeller, en connect och en disconnect tabell. Och jag vill hämta ut alla som är online. Dvs. de som är registrerade i connect men inte finns med i disconnect med ett datum/klockslag som är högre än vad de har i connect. I båda tabellerna finns userid och eventtime. Upplägget är kanske inte det bästa men tyvärr inget jag kan ändra på.
Förtydligande av databas:
-
userid
-
eventtime
-
userid
-
eventtime
Nexus86Medlem sedan okt. 20023 030 inlägg SELECT c.userid FROM connect c, disconnect d WHERE c.userid = d.userid, c.eventtime < d.eventtime
eller
SELECT c.userid FROM connect c, disconnect d WHERE c.userid = d.userid AND c.eventtime < d.eventtime
Hoppas jag. Är inte riktigt säker
mozillaMedlem sedan juli 20011 084 inlägg det fungerade inte riktigt, eller jag fick ut alla inte bara de som är online. Kan tilläggas att det fungerar så här:
När användaren loggar in skapas en post i connect
INSERT INTO connect (userid,eventtime) VALUES (id,now())
Nu är användaren online och när den loggar ut skapas en ny post i disconnect
INSERT INTO disconnect (userid,eventtime) VALUES (id,Now())
Det betyder alltså att de användare som är online bara har finns med i connect tabellen, inte i disconnect. Men de kan dock ha varit inloggade tidigare så därför måste jag kontrollera så att användaren inte finns med i tabellen disconnect eller att tiden(eventtime) är tidigare än när den loggade in i connect.
aasahMedlem sedan mars 20034 471 inlägg
mozilla skrev:
...När användaren loggar in skapas en post i connect
INSERT INTO connect (userid,eventtime) VALUES (id,now())
Nu är användaren online och när den loggar ut skapas en ny post i disconnect
INSERT INTO disconnect (userid,eventtime) VALUES (id,Now())
Det betyder alltså att de användare som är online bara har finns med i connect tabellen, inte i disconnect. Men de kan dock ha varit inloggade tidigare så därför måste jag kontrollera så att användaren inte finns med i tabellen disconnect eller att tiden(eventtime) är tidigare än när den loggade in i connect.
Nu säger du emot dig själv! :q Om userid 5 loggar in 20030709 kl 10.00, ut 20030709 kl 12.00 och in på nytt 20030723 kl.10.00 så borde enligt dina insertsatser följande finnas (bland mycket annat):
I Connect:
5 20030709 10:00
5 20030723 10:00
I Disconnect:
5 20030709 12:00
Eller finns det en deletesats som plockar bort dig ur connect-tabellen när du loggar ur?
LarsGMedlem sedan dec. 200012 464 inlägg select c.user from connect c left join disconnect d
on c.userid = d.userid
group by c.userid
having max(c.eventtime) > max(coalesce(d.eventtime,'1900-01-01 00:00:00'))