mysql - 如何使用以下视图在视图中实现多对多关系,我想在视图中的同一个表中显示 Employee 和 senctionBy
问题描述
CREATE TABLE `leave_availed` (
`LeaveID` int(10) UNSIGNED NOT NULL,
`EmpID` int(11) UNSIGNED NOT NULL,
`levType` tinyint(3) UNSIGNED DEFAULT NULL,
`senctionBy` int(11) UNSIGNED NOT NULL,
.....
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE employee (
empID int(11) UNSIGNED AUTO_INCREMENT,
name varchar(100)
...
);
CREATE TABLE leavetype (
id int(3) UNSIGNED AUTO_INCREMENT,
`type` varchar(20) ,
);
我正在尝试创建一个视图,我想在其中查看实际数据而不是 id,因此我创建了以下名为view_leave的视图,即我想在视图中显示员工姓名两次,第一次为员工,第二次为老板(senctionBy)
解决方案
employee
您可以在桌子上加入两次。您似乎还想避免使用请假类型表。
create view v_leave_availed as
select la.*, emp.name emp_name, boss.name section_by_name, lt.type leave_type
from leave_availed la
inner join employee emp on emp.empid = la.empid
inner join employee boss on boss.empid = la.senctionBy
inner join leavetype lt on lt.id = la.levtype