Я пытаюсь лучше понять, что мне нужно сделать для моего следующего проекта.Создание виртуальных объединенных групп
У меня есть 3 таблицы.
t1 (book)
-----------
id
project_id
label
t2 (box)
-----------
id
project_id
creator_id
label
t3 (how they relate to each other)
-----------
id
box_id
book_id
project_id
user_id
t1.id = t3.boo_id
t2.id = t3.box_id
t2.creator_id = t3.user_id
Книги могут быть размещены внутри ящиков, а коробки помечены. В моем скрипте подсчитывается количество книг в коробках. Он отлично работает, пока разные пользователи не начнут размещать одни и те же книги в ящики и не называть их по-разному, но близки.
Я хотел бы быть в состоянии осуществить своего рода «виртуального слияния», где я мог выбрать несколько подобных ярлыков коробки, как: разное, Разное и разное., назначьте мой собственный ярлык, скажем MISC и попросите сценарий обработать его так, как если бы книги в этих трех ящиках были внутри этого нового.
Не совсем уверен, как это сделать. Я не хочу постоянно их объединять. В конечном итоге я добавлю функциональность для удаления некоторых «ящиков» из объединенных групп и пересчитаю итоговые значения сценария.
Я думаю, что нужно добавить новую таблицу:
t4
----------
id
box_id
label
В настоящее время мой сценарий захватывает данные коробки, как это:
SELECT id, label
FROM t2
WHERE project_id = $project_id
ORDER BY id
книги, как эта
SELECT id, label
FROM t1
WHERE project_id = $project_id
ORDER BY id
и общая
SELECT COUNT(DISTINCT user_id) AS cnt
FROM t3
WHERE project_id = $project_id
Как бы я переписал запрос, учитывая, что может быть или не быть «объединенной группой»?
Я немного путайте. Кажется, у вас избыточная информация в t3, в том, что ящик похоже, принадлежит к одному проекту и создателю (за t2), что приведет к избыточности project_id и user_id в t3. – Dancrumb
t3 содержит только информацию о том, как книги, от t1 относятся к ящикам в t2. В основном, какая книга была помещена в поле и с каким пользователем. t3 используется только администратором, который может видеть всю историю транзакций с итогами. Данные t2 создаются пользователями. – santa