首页 > 解决方案 > 如何使用以下视图在视图中实现多对多关系,我想在视图中的同一个表中显示 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)

View_leave

标签: mysqlsqlinner-joinsql-view

解决方案


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

推荐阅读