В общем составил два запроса. Может кому пригодится.
$sql->select("(SELECT COUNT(*) c FROM news
WHERE news.author = '$user_name') newscount
, (SELECT COUNT(*) c
FROM torrents
WHERE torrents.user = '$user_name') torrcount
,users.date AS userdate
,users.rep AS userrep
,torrents.title AS Item_Title
,torrents.torrent AS Item_link
,'torrent' AS Item_Type",
"users",
"INNER JOIN torrents ON users.name = torrents.user
WHERE users.name = '$user_name'
LIMIT 0, 30");
$sql->select("news.link AS Item_link,
news.title AS Item_Title
, 'news' AS Item_Type",
"users",
"INNER JOIN news ON users.name= news.author
WHERE users.name = '$user_name'
LIMIT 0, 30");
Или одним запросом, но тогда придется разбивать данные уже с помощью пыха.
SELECT
@ncount := (
SELECT COUNT(*) c
FROM news
WHERE news.author = '$user_name'
) newscount
, @tcount := (
SELECT COUNT(*) c
FROM torrents
WHERE torrents.user = '$user_name'
) torrcount
, users.DATE AS userdate
, users.rep AS userrep
, torrents.title AS Item_Title
, torrents.torrent AS Item_link
, 'torrent' AS Item_Type
FROM users
INNER JOIN torrents ON users.name = torrents.user
WHERE users.name = '$user_name'
UNION ALL
SELECT
@ncount newscount
, @tcount torrcount
, users.DATE AS userdate
, users.rep AS userrep
, news.link AS Item_Title
, news.title AS Item_link
, 'news' AS Item_Type
FROM users
INNER JOIN news ON users.name= news.author
WHERE users.name = '$user_name'
LIMIT 0, 30