Based on the error message the error is not raised when executing the query. Instead it seems that binding is incorrect.
Re-check all the column names on the tables you have used in your query (size, tblcategory, and subcategory) and ensure that those column names match exactly the names you have used in binding.
Also note that if you have same column names in multiple tables you may encounter problems. In general I prefer selecting explicit columns instead of using asterisk. This for example enhances code readability and prevents unneeded data from being transferred.
For example, instead of
SELECT a.*
FROM TableName a
Something like
SELECT a.Column1,
a.Column2
FROM TableName a
And if renaming the columns is needed, something like
SELECT a.Column1 AS MyCol1,
a.Column2 AS MyCol2
FROM TableName a