mmm, a me estrae TUTTO perfettamente

codice:
SELECT 
  u.*, g.*, COUNT(pm.read) as num_mp, o.* 

FROM
  users AS u 
  INNER JOIN groups AS g ON u.groups = g.group_id 
  LEFT JOIN mp AS pm ON pm.receiver_id = u.user_id AND pm.read = 0 
  LEFT JOIN online AS o ON o.user_id = u.user_id

WHERE
  u.user_id = 1
Questa è la query che ho usato con le tabelle che hai passato. Ho fatto saltare via la pass e messo solo l'user id perché non serviva controllare quelli

PS: la query che hai postato era sbagliata perché la tabella online non ha il campo user_nick ma il campo user_id che va referenziato con il campo user_id della tabella users