У меня есть таблица, в которой есть два столбца, которые ссылаются на себя.
select * from cgroups;
+----+--------------+-------------+-----------+----------+----------+
| id | title | description | cunixperm | cgroup_1 | cgroup_2 |
+----+--------------+-------------+-----------+----------+----------+
| 1 | admin | <null> | 32 | 1 | <null> |
| 2 | tag_mng | <null> | 32 | 1 | <null> |
| 3 | tags | <null> | 32 | 1 | <null> |
| 4 | exam_mng | <null> | 32 | 1 | <null> |
| 5 | exam_writer | <null> | 32 | 1 | <null> |
| 6 | exam_viewer | <null> | 32 | 1 | <null> |
| 7 | exam_starter | <null> | 32 | 1 | <null> |
+----+--------------+-------------+-----------+----------+----------+
вот ее код: -
create table cgroups
(
id int unsigned primary key auto_increment,
title varchar(100) not null unique,
description varchar(255),
cunixperm tinyint unsigned not null default 32 ,# r=2 w=1
cgroup_1 int unsigned not null default 1 references cgroups (id) on delete cascade on update cascade,
cgroup_2 int unsigned references cgroups (id) on delete cascade on update cascade
);
Я хочу создать представления, в которых столбец cgroup_1 заменяется с фактическим названием c_group
примерно так: - http://sqlfiddle.com/#! 9 / 7af382 / 1
select c.id, c.title, c.description, c.cunixperm, c1.title cgroup_1 from cgroups c , cgroups c1
where c.cgroup_1 = c1.id;
+----+--------------+-------------+-----------+----------+
| id | title | description | cunixperm | cgroup_1 |
+----+--------------+-------------+-----------+----------+
| 1 | admin | <null> | 32 | admin |
| 2 | tag_mng | <null> | 32 | admin |
| 3 | tags | <null> | 32 | admin |
| 4 | exam_mng | <null> | 32 | admin |
| 5 | exam_writer | <null> | 32 | admin |
| 6 | exam_viewer | <null> | 32 | admin |
| 7 | exam_starter | <null> | 32 | admin |
+----+--------------+-------------+-----------+----------+
проблема с этим подходом состоит в том, что он работает только с 1 реферируемым столбцом, в то время как у меня есть два (8 в некоторых других таблицах)
, если я делаю следующее,
select c.id, c.title, c.description, c.cunixperm, c1.title, c2.title
from cgroups c , cgroups c1, cgroups c2
where c.cgroup_1 = c1.id and c.cgroup_2 = c2.id;
Я получаю ноль строк. http://sqlfiddle.com/#! 9 / 7af382 / 4