Я изо всех сил пытался выяснить, что является лучшим и наиболее эффективным способом обработки отображения дочерних данных. В моем конкретном случае я использую PHP и MySQL, но я чувствую, что это больше похоже на сделку «вообще на любом языке».
Мои две мысли (для этого примера я буду перечислять счета и их позиции)
Соединение дочерних данных (элементов счетов-фактур) с основными данными (счетами-фактурами) с целью получения только одного запроса. Моя проблема заключается в том, что, скажем, в счете-фактуре 500 позиций (вероятно, нереально, но все происходит), затем я Я бы отправил 500-кратную общую сумму данных счета-фактуры с сервера MySQL на мой PHP-скрипт, и это звучит просто смешно, поскольку мне это нужно только один раз.
И второй вариант заключается в том, чтобы при циклическом просмотре счетов-фактур и отображении общих данных счетов-фактур выбирать позиции счетов-фактур. И это, конечно, теперь связывается с базой данных еще 500 раз.
Есть ли другие варианты для работы с этими данными, которые имеют логический смысл (с данной схемой)? Я почти на 100% уверен, что есть, так как не могу поверить, что я первый, кто задумался над этой проблемой, но я думаю, что мне просто трудно найти правильный способ поиска дополнительной информации по этой теме. ,
Объединение дочерних данных (элементов счета-фактуры) с основными данными (счетами-фактурами), чтобы иметь только один запрос
Это обычный способ справиться с этим требованием. Он действительно обрабатывает избыточные данные, и есть некоторые накладные расходы.
Но.
Большинство людей просто получают избыточные данные в таком приложении. Программные продукты, такие как Crystal Reports, делают это.
Если это просто не сработает, вы извлекаете и сохраняете один набор результатов для своих основных записей … может быть, что-то вроде этого.
SELECT master_id, name, address, whatever
FROM master m
WHERE m.whatever = whatever
ORDER BY whatever
Затем поместите их в ассоциативный массив master_id
,
Затем получите подробные записи.
SELECT d.master_id, d.detail_id, d.item, d.unit, d.quantity
FROM detail d
JOIN master m ON d.master_id = m.master_id
WHERE m.whatever = whatever
ORDER BY d.master_id, d.detail_id, whatever
Вы получите набор результатов со всеми соответствующими подробными записями (элементами счета-фактуры), помеченными master_id
значение. Вы можете сопоставить их в вашей программе php с основными записями. Вы в основном делаете соединение в своем коде приложения.
Если все это звучит как слишком большая боль в шее … просто зайдите на избыточные данные и завершите ваш проект. Вы всегда можете оптимизировать позже, если нужно.
Других решений пока нет …