MySql, как получить имя на основе основного в той же строке? - PullRequest
0 голосов
/ 02 июля 2019

Я хочу показать некоторые данные из базы данных. Идентификатор начальника находится в той же строке, что и сотрудник. Я хочу отобразить имя босса. eId - это идентификатор сотрудника, а bossId - это идентификатор его босса. recepId - это идентификатор администратора этого отдела.

Я хочу показать название отдела, описание, идентификатор администратора, имя администратора, идентификатор начальника и его имя.

Я могу отобразить все, кроме имени босса. Как управлять этим внутри моего запроса?

Таблица сотрудников:


| eId          | name        |city           |bossId  | depNr |
|:-------------|------------:|:------------:|--------------------
| 345          |  Frits      |    Canvas    |  240    |  60|
| 240          |  Steven     |    Canvas    |  200    |  90|
| 265          |  John       |    Kentucky  |  40     |  60|
| 40           |  Kreuger    |    Kentucky  |         |  90|

Стол отдела:


| depCode      | depName       |locId       |recepId|
|:-------------|------------:  |:-----------|----------
| 60           |  Finance      |  CAN       | 345    |
| 90           |  Research     |  CAN       | 265    |

Таблица расположений:


| code         | description   |country     |
|:-------------|------------:  |:-----------|
| CAN          |  Finance      |  USA       | 
| CAN          |  Research     |  USA       |
| KEN          |  Economics    |  USA       | 

Что я хочу:


| depName      | description |recepId       |name     | bossID| bossName|
|:-------------|------------:|:------------:|----------------------------
| 345          |  COD12      |    Canvas    |  Frits  |  240  | Steven
| 140          |  COD40      |    Canvas    |  John   |  800  | Kreuger

Мой запрос:

SELECT department.depName, Location.description, department.recepId, employee.name, employee.bossId
FROM department 
INNER JOIN Location
ON Location.code = department.locId
Left JOIN employee
ON department.recepId = employee.eId

Это показывает:


| depName      | description |recepId       |name     | bossID|
|:-------------|------------:|:------------:|-------------------
| 345          |  COD12      |    Canvas    |  Frits  |  240  | 
| 140          |  COD40      |    Canvas    |  John   |  800  | 

1 Ответ

0 голосов
/ 02 июля 2019

Присоединитесь к employee снова, чтобы получить имя босса.

SELECT department.depName, Location.description, department.recepId, 
        employee.name, employee.bossId, boss.name AS bossName
FROM department 
INNER JOIN Location
ON Location.code = department.locId
Left JOIN employee
ON department.recepId = employee.eId
LEFT JOIN employee AS boss
ON employee.bossId = boss.eId
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...