我有以下表格结构(DDL):
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_name和groups_name。
我提出了以下问题:
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也不起作用。

我相信问题在数据中,但我一点也不确定,希望有人有时间来检查一下。
我能得到什么帮助吗?
注意:我留下了一组数据这里,如果需要的话可以使用它,但是不准确,您需要删除一些列和它的值。
发布于 2016-11-18 14:11:25
玩左+内,你可以改变SQL查询的逻辑。
如果您需要所有来自restricted_component -左侧联接,但因为组必须是所有内在的。
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数据集的结果
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 Adminshttps://dba.stackexchange.com/questions/155645
复制相似问题