try
SELECT
`media`.`media_id` ,
`media`.`user_id` ,
`media`.`media_key` ,
`media`.`type` ,
`media`.`title` ,
`media`.`categories` ,
`user`.`username` ,
`sections`.`url` ,
DATEDIFF(NOW(), `media`.`added`) AS `period`
FROM
`media` ,
`user` ,
`sections`,
(SELECT categories, MAX(added) as latest
FROM media GROUP BY categories) as x
WHERE
`media`.`flag` != 'm'
AND
`user`.`user_id` = `media`.`user_id`
AND
`user`.`active` = 'y'
AND
media.categories = x.categories
AND media.added = x.latest
ORDER BY
`media`.`added` DESC