我有三张桌子:
- 内容
- 内容_类别
- 内容类
有四种类型的 Content Classes,Content_Class 与 Content 行具有 Many:1 关系,以将每个内容与 1 个或多个类链接。
相同的规则适用于类别,类别也与内容行存在多对一关系。
我的目标是,给定一组可能在 category 上过滤的内容行,每个 Class 的 Content_Class 行的总计数是多少?
我当前的查询:
SELECT cc.class_Id, COUNT(*) AS `records`
FROM Content_Class cc
LEFT JOIN Content c ON c.id = cc.content_id
LEFT JOIN Content_Category ccat ON c.id = ccat.content_id
WHERE cc.class_id IS NOT NULL
GROUP BY cc.class_id';
这不会提供准确的计数,因为对于包含多个类别关系的内容,内容行在查询响应中的每个类别链接中显示一次,从而增加了类出现的计数。
例如,如果一个内容行映射到两个类别和两个类,它将显示四次,结果中唯一内容到类关系的实际计数加倍......
按唯一内容行获取所有内容类出现的唯一计数的最佳查询是什么?