Read up on what list() does. You are specifying only two variables in the list() while your SQL query has 8. Sine you're only got two variables listed, PHP puts mergers.id value into the $id variable, and mergers.name into the $name variable while the rest are ignored.
list() manual page:
http://us2.php.net/manual/en/function.list.php
Since all the tables have an id and name columns, then maybe you can use this query instead (and leave the list() the way it is):
$query =
"SELECT id, name FROM mergers
UNION
SELECT id, name FROM rights
UNION
SELECT id, name FROM spin_offs
UNION
SELECT id, name FROM splits";
The UNION will automatically exclude any duplicate rows from the data returned by the SELECT. If you want it to return all rows, including duplicates, use the UNION ALL clause instead of the just the UNION keyword.
hth