На самом деле вы можете использовать MySQL в качестве анализатора и получать имена таблиц в своем запросе независимо от сложности синтаксиса SQL.
(Извините, что это поздний ответ на ваш вопрос - у меня сегодня была такая же проблема, и я нашел это решение.)
Просто добавьте ваш запрос к слову EXPLAIN, и набор результатов, возвращаемый PHP, будет включать id, select_type, table, type, возможных_ключей, ключ, key_len, ref, lines, Extra. Третий столбец - это имя каждой таблицы в вашем запросе.
Например, если ваш запрос был:
select count(*) from ey_def left join ey_rels on def_id=item_id;
Использование:
explain select count(*) from ey_def left join ey_rels on def_id=item_id;
И MySQL вернет это PHP:
+----+-------------+---------+-------+---------------+---------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+---------+-------+---------------+---------+---------+------+------+-------------+
| 1 | SIMPLE | ey_def | index | NULL | PRIMARY | 4 | NULL | 87 | Using index |
| 1 | SIMPLE | ey_rels | ALL | NULL | NULL | NULL | NULL | 123 | |
+----+-------------+---------+-------+---------------+---------+---------+------+------+-------------+
Теперь вы можете просто обработать результаты, как и любой другой запрос.