Please, see the answer posted by eggyal:
http://stackoverflow.com/questions/3029321/troubleshooting-illegal-mix-of-collations-error-in-mysql[
^]
As per i understand you can't mix numeric and string values. You need to convert/cast it to string
SELECT CONCAT(MONTHNAME(i.time), ' ', CONVERT(CHAR(4), YEAR(i.time)), c.categoryName) AS NewColName
FROM ...
Another reason is different collation for each table. You can workaround it by using
CONVERT
function.
SELECT CONVERT(c.categoryName USING utf8) AS Utf8CategoryName