【发布时间】:2017-04-28 17:43:26
【问题描述】:
我是 SQL 新手,似乎无法提出正确的问题,因为每次我以不同的方式表述它时,我最终都会得到相同的结果:按多个属性对数据进行分组的查询(共享超过一个属性)。
我正在 Glassfish 服务器上编写一个基于 JSP 的网站,并通过 MS Access 管理数据库。
我感兴趣的基本上是按几个不同的属性进行分组。假设我有一个表格,显示用户拥有哪些项目。像这样的:
id | name | item1 | item2 | item3 | item4 |
--------------------------------------------------
1 | name1 | yes | yes | | yes |
----+-------+---------+--------+--------+--------+
2 | name2 | yes | | | yes |
----+-------+---------+--------+--------+--------+
3 | name3 | | yes | | yes |
----+-------+---------+--------+--------+--------+
4 | name4 | yes | yes | | yes |
----+-------+---------+--------+--------+--------+
5 | name5 | | | yes | yes |
.
.
.
我需要的查询将返回以下内容:
ItemID | Number of users with this item
-----------------------------------------
item1 | 3
item2 | 3
item3 | 1
item4 | 5
我不知道如何在这里使用GROUP BY,因为我正在寻找的结果基本上要求原始表的 属性 现在将显示为 结果表的每一行中的值。
什么是正确的查询,以及如何调用这样的操作(不是每个属性分组,它是别的......)?
【问题讨论】:
-
你应该改变你的数据库设计。有一张用户表(user_id, name),一张表(item_id, name)和一张user_items(user_id, item_id)。有了这种规范化的表结构查询会更容易编写。
标签: sql jsp ms-access jdbc group-by