Нужна помощь в следующем запросе - PullRequest
0 голосов
/ 03 марта 2019

Перечислите данные о сотруднике и его менеджерах, где зарплата сотрудников больше, чем зарплата руководителей

Где мои таблицы следующие:

//employee table
`Employee` (
`Ename` VARCHAR( 25 ) NOT NULL (primary key) ,
`Street` VARCHAR( 40 ) NOT NULL ,
`City` VARCHAR( 20 ) NOT NULL ,
`joining_date` DATE NOT NULL ,
`gender` VARCHAR( 7 ) NOT NULL ,
PRIMARY KEY ( `Ename` ) 
) ENGINE = MYISAM ;


//company table
 `Company` (
`Cname` VARCHAR( 25 ) NOT NULL ,
`city` VARCHAR( 20 ) NOT NULL ,
PRIMARY KEY ( `Cname` ) 
) ENGINE = MYISAM ;



//works table
`Works` (
`ename` VARCHAR( 25 ) NOT NULL ,
`cname` VARCHAR( 25 ) NOT NULL (foreign key),
`salary` INT( 50 ) NOT NULL ,
PRIMARY KEY ( `ename` ) 
) ENGINE = MYISAM ;



//manages table
 `Manages` (
`empname` VARCHAR( 25 ) NOT NULL ,
`manager_name` VARCHAR( 25 ) NOT NULL 
) ENGINE = MYISAM ;
here ename and manager name is composite key


//dependent table
employee_dependent(
employee_name VARCHAR(15) NOT NULL(foreign key),
dependent_name VARCHAR(25) NOT NULL,
relation VARCHAR(25) NOT NULL,
    gen VARCHAR(25) NOT NULL,
    PRIMARY KEY(dependent_name)
);

1 Ответ

0 голосов
/ 03 марта 2019

Вы можете написать свой запрос следующим образом, чтобы узнать, где зарплата сотрудников больше, чем зарплата менеджеров.

Вам нужно присоединиться к сотруднику и работать два раза, один для сотрудника и один для менеджера.

SELECT e.*,m.Ename as manager,  
FROM Employee e
    INNER JOIN Manages rel on e.ename = rel.empname
    INNER JOIN Employee m on m.ename = rel.manager_name
    INNER JOIN Works we on we.ename=e.empname
    INNER JOIN  Works wm on wm.ename=m.empname
WHERE we.salary > wm.salary
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...