#mysql #database #ms-access
#mysql #База данных #ms-access
Вопрос:
ЦЕЛЬ
Создайте отчет, который извлекает данные из нескольких таблиц (например, инвентаризация, детали товара, заказы на поставку).
ПРИМЕЧАНИЕ: таблицы инвентаризации, сведений об изделиях, заказов на поставку и информации о клиентах связаны с внешней системой ERP. Эти таблицы являются массивными и обновляются ежечасно.
ПОДХОД
- Из-за огромного размера каждой таблицы создавайте запросы меньшего размера («Make table» в Access), которые извлекают соответствующую табличную информацию (например, «InventoryQuery» извлекает «ИДЕНТИФИКАТОР ЭЛЕМЕНТА» и «ОПИСАНИЕ ЭЛЕМЕНТА» — отрицая остальные 99 столбцов в исходной таблице ERP). Повторите этот процесс для деталей товара, заказов на поставку и сведений о клиентах.
- Создайте другой запрос («ГЛАВНЫЙ ЗАПРОС«, который объединяет все недавно консолидированные таблицы для создания отчета.
ПРОБЛЕМА (Ы) / ВОПРОС (Ы)
- Поправьте меня, если я ошибаюсь, но я считаю, что запросы «Make Table» не обновляются постоянно. В результате ОСНОВНОЙ ЗАПРОС не будет обновляться. Как я могу изменить свой ОСНОВНОЙ ЗАПРОС, чтобы выполнять запросы Make Table в режиме реального времени?
РЕДАКТИРОВАТЬ: я пытался создать ОСНОВНОЙ ЗАПРОС из подзапросов, но из-за размера связанных таблиц процесс занимает очень много времени (> 10 минут)
Комментарии:
1. Вы не можете. Вы должны выполнить «Создание таблиц», чтобы настроить сводные / узкие таблицы, затем использовать запросы «INSERT» для добавления к ним новых почасовых данных из ваших таблиц ERP. Вам нужно будет запускать эти запросы INSERT всякий раз, когда вы хотите обновить данные в таблицах, которые были сгенерированы из ваших первоначальных таблиц make. Способ, которым вы хотите это сделать, будет на 100% идентичен простому использованию подзапросов в ваших основных таблицах ERP, которые, как вы уже определили, слишком громоздки.
2. Нет ничего плохого в использовании функциональности отчетов Access, я слышал об этом хорошие вещи. И я согласен с комментарием, что вам нужно много промежуточных таблиц, а не монолитный запрос с подзапросами. Однако я бы поставил под сомнение решение о создании / обновлении ваших промежуточных таблиц с использованием функций Access, например. Хранимые процедуры Access могут выполнять только один оператор SQL и будут проблемой, если вам нужно удалить / создать таблицу перед созданием таблицы / вставкой. Посмотрите, чтобы создать промежуточные таблицы / данные на стороне сервера или, возможно, другой экземпляр mysql между сервером и Access.