我有一个categories表,它有两列,id和name.
我有一个types表,其中包含三列id,category_id和points。
我有一个products表,其中包含三列id,type_id和customer_id。
这意味着每个产品都有一个类型,每个类型都有一个类别。一个品类有多种类型,一种类型有多种产品。
我正在使用 MySQL 和 PHP。
从 PHP 中,给定customer_id,我想知道客户在每个类别中分别拥有多少分(例如,向用户显示一个表格)。
我的解决方案:我首先会做一个查询来查找所有类别 id,然后对于每个category_id我会找到该类别中的所有类型(即,所有具有给定 的类型category_id);然后对于每一个,type_id我会计算有多少产品同时具有那个type_id和给定的customer_id,我会把那个数量乘以给定的点数type_id。将每个结果的所有结果相加type_id,我最终得到了给定客户在这方面的总分category_id。正如我所说,我必须为每个category_id. 我的解决方案会起作用,但在我看来它会非常慢。我正在寻找有关如何以更好的方式解决此问题的建议 - 使用更少的查询,或更快的查询,或两者兼而有之。 按照现在的方式,它可能会执行与类别数量一样多的查询。
例子:
/* TABLE: categories */
name id
A 1
B 2
C 3
/* TABLE: types */
points id category_id …Run Code Online (Sandbox Code Playgroud)