首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获得restricted_components及其相关信息的列表?

如何获得restricted_components及其相关信息的列表?
EN

Database Administration用户
提问于 2016-11-17 20:42:44
回答 1查看 31关注 0票数 2

我有以下表格结构(DDL):

代码语言:javascript
复制
CREATE TABLE restricted_components
(
    component_id INT(11) PRIMARY KEY NOT NULL,
    resources_id INT(11) NOT NULL,
    component_dom_id VARCHAR(50) NOT NULL,
    component_dom_class VARCHAR(50),
    component_dom_data_name VARCHAR(50),
    visible TINYINT(1) DEFAULT '0' NOT NULL
);

CREATE TABLE resources
(
    resources_id INT(10) unsigned PRIMARY KEY NOT NULL AUTO_INCREMENT,
    resources_name VARCHAR(64) NOT NULL,
    menu_href VARCHAR(128),
    menu_text VARCHAR(64) NOT NULL
);

CREATE TABLE acl_groups_to_resources
(
    groups_id INT(10) unsigned NOT NULL,
    resources_id INT(10) unsigned NOT NULL,
    bitmask SMALLINT(6) DEFAULT '0' NOT NULL,
    CONSTRAINT `PRIMARY` PRIMARY KEY (groups_id, resources_id)
);

CREATE TABLE groups
(
    groups_id INT(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
    groups_name VARCHAR(50) NOT NULL
);

我试图从其他表中获取一个restricted_components列表,其中包含它的相关信息,这意味着resources_namegroups_name

我提出了以下问题:

代码语言:javascript
复制
SELECT
  `rc`.*,
  `rs`.resources_name,
  `gr`.`groups_name`
FROM `restricted_components` AS `rc`
  LEFT JOIN `resources` AS `rs` ON rc.resources_id = rs.resources_id
  LEFT JOIN `acl_groups_to_resources` AS `acl_gr` ON rs.resources_id = acl_gr.resources_id
  LEFT JOIN `groups` AS `gr` ON acl_gr.groups_id = gr.groups_id

但这是错误的,因为我有不想要的结果,如下图所示:

我确信问题在LEFT JOIN上,但我找不到确切的位置以及如何解决这个问题。

更新1:使用JOIN也不起作用。

我相信问题在数据中,但我一点也不确定,希望有人有时间来检查一下。

我能得到什么帮助吗?

注意:我留下了一组数据这里,如果需要的话可以使用它,但是不准确,您需要删除一些列和它的值。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2016-11-18 14:11:25

玩左+内,你可以改变SQL查询的逻辑。

如果您需要所有来自restricted_component -左侧联接,但因为组必须是所有内在的。

代码语言:javascript
复制
SELECT
  `rc`.*,
  `rs`.resources_name,
  `gr`.`groups_name`
FROM `restricted_components` AS `rc`
  LEFT JOIN `resources` AS `rs` ON rc.resources_id = rs.resources_id
  INNER JOIN `acl_groups_to_resources` AS `acl_gr` ON rs.resources_id = acl_gr.resources_id
  INNER JOIN `groups` AS `gr` ON acl_gr.groups_id = gr.groups_id
ORDER BY component_id

数据集的结果

代码语言:javascript
复制
1   1   button_1    button_1        1   Users   Administrators
1   1   button_1    button_1        1   Users   User Admins
2   2   button_2            0   Companies   Administrators
3   3   button_3            0   Hardware    Administrators
4   4   button_4            0   Reports Administrators
4   4   button_4            0   Reports Reports Admin
5   5   button_5            0   Notifications   Administrators
5   5   button_5            0   Notifications   Company Admins
票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/155645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档