我目前正在为构建学习目的而构建一个基本的店面应用程序。
我的MySQL数据库“items”和“field_values”中有两个表,它们具有1对多的关系。还有一个字段表和一个字段集表,但这些表与查询无关。集合可以包含许多字段,而项目包含一组或多组字段。
id,name
set_id,item_id,field_1,field_2,field_3等..
我构建了一个动态查询,允许最终用户根据这些字段的值过滤掉结果,因此当过滤2个字段时,我有一个类似的查询(伪)
SELECT * FROM items LEFT JOIN field_values WHERE field_1=2 and field_2=7
我的问题是我如何展开它以显示其余选项的计数?换句话说,上面的查询为我提供了一个结果集,但是我还希望获得每个field_3,field_4等值的计数,以便用户事先知道他们将获得多少结果,因此我无法提供任何选项将返回0结果。
我希望这是有道理的。
提前致谢
安迪
答案 0 :(得分:0)
您将像现在一样构建where
子句。然后执行聚合查询而不是获取列:
SELECT field_1, field_2, field_3, count(*)
FROM items LEFT JOIN
field_values
WHERE field_1 = 2 and field_2 = 7
GROUP BY field_1, field_2, field_3;
这将给出其他值的所有组合。