Как в MySQL написать запрос к нескольким таблицам с выводом имен таблиц в которых нашлось значение?
Здравствуйте! Дано: куча таблиц, которые именуются датой, например 20170628, 20170515, 20160901 и т.д. Структура у всех таблиц одинаковая (id, name, price). Необходимо получить даты (в данном случае названия таблиц), в которых поле "name" равно искомому значению. При этом значения поля "name" уникальны в рамках одной таблицы и могут повторяться в разных.
Например мы ищем слово "test" в столбце "name" по всем таблицам. Нашлось в 2х. Нужно вывести их название и значение поля "price".
По запросу "test" найдено:
table_name -> price
20170628 -> 5000
20170515 -> 5500
SELECT '20170628' AS `table_name`, `price` FROM `20170628` WHERE `name` = 'test'
UNION
SELECT '20170515' AS `table_name`, `price` FROM `20170515` WHERE `name` = 'test'
UNION
SELECT '20160901' AS `table_name`, `price` FROM `20160901` WHERE `name` = 'test'
Да как-то писали сначала как попало в CSV, потом CSV перевели 1 в 1 в БД, а теперь задумались как эти данные обрабатывать =) Если есть предложения более оптимального хранения данных - предлагайте =)
Владимир: На одну дату приходится около 6000 строк записей. Если все это хранить в одной БД, то получится очень много данных в одной таблице. И в таком виде придется значение поля "Дата" дублировать 6000 раз, чтобы получить дату по имени. Может я вас не правильно понял.
Если боитесь огромного размера БД (а по современным меркам огромного размера бояться не стоит), регулярно удаляйте неактуальные данные в архивные таблицы.
Рекомендую также ознакомиться с этой статьёй и ещё с этой.