Autor | Zpráva | ||
---|---|---|---|
blazej44800 Profil |
#1 · Zasláno: 27. 7. 2013, 19:29:56
Ahojte
Potrebujem jeden MySQL Join. Riešil som ho už asi 5x ale stále nefunguje. Mám užívateľov v jednej tabuľke a v druhej tabuľke sú sessiony (čiže SID, nejaký čas poslednej aktivity a čas odhlásenie - ak už prebehlo). Potrebujem teraz vypísať všetkých užívateľov spolu s posledným sessionom podľa ktoré zistím či je online (čiže posledná aktivita bola - 60 sekúnd). Ako spraviť takýto JOIN? Dopracoval som sa ku niečo takému: SELECT user.*, session.activity AS last_activity, session.logout_time AS logout_time FROM `test_users` AS user JOIN `test_sessions` AS session ON session.id = ( SELECT MAX(id) FROM `chatv2_sessions` WHERE user_id = user.id GROUP BY user_id ) ORDER BY session.activity Avšak vypíše to iba jedného usera. Neviete mi prosím niekto poradiť? Vďaka :) |
||
Actimel Profil |
#2 · Zasláno: 27. 7. 2013, 19:39:15
Budeš si muset udělat dočasnou tabulku s těma sessionama, kde budeš mít id uživatele, SESSID a maximální čas.
To potom JOINneš s tabulkou uživatelů |
||
blazej44800 Profil |
Príde mi to trochu dosť obtiažne na tak relatívne jednoduchý problém. Inak by to nešlo? Ani nejakýmy subquery alebo niečo?
Vyriešené a funguje to: SELECT * FROM test_sessions AS session JOIN test_users AS user ON session.user_id = user.id WHERE session.activity + INTERVAL 15 SECOND > NOW() AND session.logout_time is NULL GROUP BY user.id ORDER BY session.id |
||
Časová prodleva: 11 let
|
0