How do you expect a possible multiple number of columns to be returned and given teh same name?
... , t1.* AS ID, ...
"*"returns multiple rows, and can;t be used with
AS
Never use SELECT * ... FROM - always list your columns. That way, you have control over exactly what is returned, and the order it is returned in so database changes don't affect your code (unless a required column is removed, in which case you DEFINITELY want to know about it). It also helps with bandwidth, in that unnecessary columns aren't returned, which can waste a lot of bandwidth, memory, and time.