I think the sql is being broken up like this:
--this select statement has 3 columns
select staff.staffid, staff.staffname, staff.department from staff left join department on staff.departmentid = department.departmentid
union all
--this select statement has 2 columns
select department.departmentname, department.domain from department left join staff on department.departmentid = staff.departmentid;
A union should be between selects with the same number of columns