php - 在虚拟名册上对用户进行分组

标签 php mysql sql greatest-n-per-group

我正在尝试想出最简单/有用/高效的方法来使用 mysql 将 3 个用户分组在一起。

设置舞台:

  • 列表中的 X 个用户(所有用户都具有 int account_id)
  • 需要基于每个用户创建迷你分组(例如,用户 1 想要分组 220)。
  • 每组最多 3 人(用户 1 + 用户 220 + 用户 9123 = 组已满)
  • 需要在不查看一堆列的情况下轻松找到用户是否在组中

我不知道如何最好地为此创建一个模式(这样我就可以轻松地查询我的表以查看用户是否在一个组中,或者他们是否可以添加,或者检查组空间可用性)。

有人知道吗?我最初的想法是这样的架构(但它确实看起来太死板了):

架构

GROUP_ID  USER1  USER2  USER3 LASTUPDATE
1         1      220    null  5/25/2011 20:00:00
2         300    2      4     5/25/2011 20:00:00

您将如何做才能使如此简单的事情变得非常灵活和高效。我真的觉得问的很蠢。

最佳答案

就我个人而言,我会使用 3 个表来解决这个问题。

Users Table
user_id user_name ..... last_update

Groups Table
group_id group_name ......

Users to groups Table
user_to_group_id user_id group_id

这通过"Users to groups" 表链接形成多对多关系,显然您可以将超过 3 个用户链接到一个组,因此您将在向组中添加新用户时,必须让您的 PHP 逻辑检查这一点。

您可以简单地使用 SQL 连接来检索所有需要的数据并在您的 PHP 代码中过滤结果。

希望对你有帮助

亲切的问候

加里

关于php - 在虚拟名册上对用户进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6133713/

相关文章:

php - 我想在我的注册页面上添加一个可用按钮

php - 在 Sphinx 中使用 MVA 属性

sql - PostgreSQL - 添加 CONSTRAINT UNIQUE 并且不验证现有数据

php - 在 PHP 中应如何处理带连字符的 LinkedIn People 个人资料字段?

php - 如何提高联系WebService的性能?

php - Ajax Mysql PHP 如何将 $_SESSION 数组结果显示到 DIV 中

mysql - 使用SQL比较不同表之间的数据

sql - 什么更好 : to have many similar databases or one database with similar tables or one database with one table?

php - 第 5 行 : Call to undefined function link_to_route()

php - 根据内容中的日期获取最近 N 周的 MySQL 行