Я начинаю новый проект, и я собираюсь принять, возможно, самое важное дизайнерское решение.
Я буду работать с PHP для создания динамических запросов «на лету». (Я хочу предоставить пользователям сопоставление с динамическими таблицами в MS Excel).
У меня есть 25 таблиц с примерно 4-6 столбцами каждый, что я буду присоединяться в зависимости от выбора пользователя (большинство операций будут вычислять AVG, SUM, COUNT и т. Д. В зависимости от некоторых фильтров значений, которые, вероятно, составляют от 5 до 6 табличных объединений далеко).
Я собираюсь сделать все эти JOINS и SELECTS «на ходу», а также GROUPS BY, но похоже, что это будет довольно сложно, поэтому я начал думать об использовании представлений, чтобы уменьшить сложность кода, который динамически создает запрос.
Я также думал, что избегаю GROUPS BY в запросе и вычисляю агрегатные функции с использованием циклов и массива в коде.
Я хотел бы знать, какой из этих подходов вы бы порекомендовали, или если у вас есть какие-либо рекомендации или советы, мы будем очень благодарны.
Единственный ответ, который действителен, – это создать для себя свои собственные рамки. Я сделал это несколько раз. То, что вы хотите, выглядит более или менее похожим на генератор отчетов complexe, который генерирует отчеты «на лету», но вы хотите создать генератор сложных запросов с визуальными средствами для клиента.
Первое, что я хотел бы сделать, это использовать модель, которая представляет каждую таблицу, и предлагает механизмы для описания полей таблицы, чтобы вы могли показать пользователю поля. Затем создайте механизм ссылок в своих моделях, который гласит: если я свяжу эту таблицу и эту таблицу, что такое JOIN, который я должен использовать.
Пусть ваш пользователь выбирает модели для ваших столбцов, а затем использует ваши модели для создания запроса для вас. Он действительно работает хорошо, но занимает довольно много времени.
Удачи