UPDATE `users`
LEFT JOIN (
SELECT `user_id_from`, COUNT(*) AS `count` FROM `messages` GROUP BY `user_id_from`
) AS `from` ON `from`.`user_id_from` = `users`.`user_id`
LEFT JOIN (
SELECT `user_id_to`, COUNT(*) AS `count` FROM `messages` GROUP BY `user_id_to`
) AS `to` ON `to`.`user_id_to` = `users`.`user_id`
SET `users`.`sended` = IFNULL(`from`.`count`, 0),
`users`.`received` = IFNULL(`to`.`count`, 0)
CREATE TRIGGER `add_message` BEFORE INSERT ON `messages` FOR EACH ROW BEGIN
UPDATE user SET sended = sended + 1 WHERE user_id = new.user_id_from;
UPDATE user SET received= received + 1 WHERE user_id = new.user_id_to;
END;
Find more questions by tags SQL