我想更好地了解我需要为我的下一个项目做些什么。创建一个虚拟合并组
我有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 t1
WHERE project_id = $project_id
ORDER BY id
和总
SELECT id, label
FROM t2
WHERE project_id = $project_id
ORDER BY id
书像这样的计数
SELECT COUNT(DISTINCT user_id) AS cnt
FROM t3
WHERE project_id = $project_id
我该如何重写查询,因为可能有或没有“合并组”?
我是有点困惑,你似乎在t3中有冗余信息,在那个盒子里似乎属于单个项目和创建者(每个t2),这会在t3中呈现project_id和user_id冗余。 – Dancrumb
t3仅包含来自t1的书与t2中的方框有关的信息。基本上哪本书放在哪个盒子里,哪个用户。 t3仅供管理员使用,可以查看总计的所有交易历史记录。 t2数据由用户创建。 – santa