Я огляделся и не могу найти решение, которое бы отвечало моим потребностям, поэтому я надеюсь, что вы поможете.(Я немного новичок в MySQL, хотя у меня достаточно опыта работы с SQL Server и Oracle.)
У меня есть база данных с несколькими таблицами.
Первая таблицаявляется таблицей определений, которая хранит основную информацию и называется cp_def:
cid (pkey) status
-------------------
10001 0
10002 1
Затем для каждой записи в таблице cp_def существует соответствующая таблица cp_ [cid] (где [cid] - значение cidиз таблицы cp_def).Пример:
table: cp_10001
id(pkey) code date_issued date_expired
-------------------------------------------------
1 ABC123 2011-06-23 2011-06-30
2 CYG124 2011-06-23 2011-06-30
table: cp_10002
id(pkey) code date_issued date_expired
-------------------------------------------------
1 CAC126 2011-06-23 2011-06-30
2 VGC254 2011-06-23 2011-06-30
Мне нужно запускать динамический запрос каждый день (как часть сценария оболочки и задания cron), чтобы вывести значения столбца code и date_expired для всех записей во всех таблицах cp_ [cid]где значение date_issued - дата предыдущего дня.
У меня есть рабочий запрос (см. Ниже).Однако каждый раз, когда я добавляю новую таблицу cp_ [CID], мне нужно вручную добавить еще один оператор UNION ALL в конец запроса.
SELECT code, date_expired
FROM mydatabase.cp_10001
WHERE DATE(date_issued) = DATE_SUB(CURDATE(), INTERVAL 1 DAY);
UNION ALL
SELECT code, date_expired
FROM mydatabase.cp_10002
WHERE DATE(date_issued) = DATE_SUB(CURDATE(), INTERVAL 1 DAY);
Моя конечная цель - программно сгенерировать вышеуказанный запрос,во время его выполнения, так что каждый раз, когда новая таблица cp_ [CID] добавляется в базу данных, она не требует ручного вмешательства.
Я пытался использовать представление.Тем не менее, казалось, что добавление таблицы потребует ручного изменения представления, чтобы учесть новую таблицу.
Учитывая, что каждая таблица cp_ [CID] указана в таблице cp_def (такжекак таблица INFORMATION_SCHEMA), я думал, что мог бы выполнить какой-то цикл для построения динамического запроса, но я не совсем понял это.В интересах сохранения этого краткого описания я буду избегать публикации моих неудачных попыток циклически проходить по таблице cp_def для создания динамического запроса.
Буду весьма признателен за любую помощь, которую вы можете оказать, указав мне правильное направление для составления такого запроса.Если я что-то упустил, прошу прощения.Я пытался найти именно то, что я ищу, по множеству разных фраз, но безрезультатно.