Autor Zpráva
blazej44800
Profil
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
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

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: