【问题标题】:Select Count from One to Many Table从一到多表中选择计数
【发布时间】:2014-05-27 16:36:36
【问题描述】:

我正在使用 MS SQL。

我的安全系统有一个访问组/权限一对多表设置。用户被分配了一个组。每个组可以有许多不同的权限。我需要一个 select 语句来检查(返回计数)组是否具有特定权限。

我将为 select 语句提供的数据是用户的 GroupID 和他们请求访问的权限名称。

逻辑上我需要的是:

  1. 获取权限名称的 ID。 pID = SELECT permissionID FROM Permission_List WHERE permissionName = 'News'
  2. 检查Group_Permission表,看看用户的GroupID是否与permissionID等于pID相交
  3. 如果计数为 0,则组无权访问。如果计数为 1,则该组有权访问。(我将在 PHP 中处理)

表:组列表

groupID     groupName       groupDesc
1           Standard        Normal Access Level.
2           Limited         Limited Access Level.
3           Medium          Medium Access Level.

表:权限列表

permissionID    permissionName  permissionProtect   permissionDesc
1               News            0                   News section access.
2               Forums          0                   Forums section access.
3               Contacts        0                   Contact section access.

表:Group_Permission

groupID     permissionID
1           1
1           2
1           3
2           1
3           1
3           2

【问题讨论】:

    标签: sql sql-server select one-to-many


    【解决方案1】:

    您应该能够将JOIN 表一起使用并使用COUNT 聚合。对于此示例,我假设您提供的是组 ID 和权限名称。

    SELECT COUNT(*)
    FROM Group_Permission GP
        JOIN Permission_List PL ON GP.permissionId = PL.permissionId
    WHERE PL.permissionName = 'News'
        AND GP.groupId = @someGroupId
    

    如果 count 大于 0,则该组的权限存在。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-19
      • 1970-01-01
      相关资源
      最近更新 更多