You give as example the query:

    SELECT
        fix_date,
        home.tea_name,
        away.tea_name
    FROM
    fixtures
    JOIN
    teams AS home ON home.tea_id = fix_home
    JOIN
    teams AS away ON away.tea_id = fix_away

The way to work around it is to make sure that all the column names returned are distinct.

  SELECT fix_date, home.tea_name AS hometeam, away.tea_name AS awayteam
  FROM fixtures
  JOIN teams AS home ON home.tea_id = fix_home
  JOIN teams AS away ON away.tea_id = fix_away

Now you don't have a name collision and you won't have a problem with one 'tea_name' overwriting another.