Я хочу объединить таблицы из разных схем, используя UNION_ALL.Таблицы имеют одинаковую схему, как в этом игрушечном примере:
class1.names
+----------+
| id | name|
+----------+
| 1 | jon |
| 2 | ann |
| 3 | rob |
class2.names
+----------+
| id | name|
+----------+
| 1 | rav |
| 2 | meg |
| 3 | mat |
Я могу жестко закодировать список классов в массив или, что более предпочтительно, получить их с помощью запроса, например:
SELECT DISTINCT(TABLE_SCHEMA)
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
Я хочу объединить таблицы следующим образом:
SELECT *, 'class1' as class FROM class1.names
UNION_ALL
SELECT *, 'class2' as class FROM class2.names
UNION_ALL
etc.
Но в запросах уровня схемы будет происходить намного больше, чем SELECT *, 'class1'...
, поэтому я хочу сделать это с помощью циклаили какой-то другой систематический метод.
Я смотрю на динамический sql или использую GROUP_CONCAT с 'UNION_ALL' в качестве разделителя, но у меня возникают проблемы с прогрессом.
Добавление: я знаю этоплохой дизайн схемы, но сейчас я ничего не могу с этим поделать.