【问题标题】:MySql how to get a name based on a primary in the same row?MySql如何根据同一行中的主节点获取名称?
【发布时间】:2019-07-02 08:22:29
【问题描述】:

我想显示数据库中的一些数据。老板的 id 与员工在同一行。我想显示老板的名字。 eId 是员工的 id,bossId 是他的老板的 id。 recepId 是那个部门的接待员的id。

我要显示部门名称、描述、接待员id、接待员姓名、老板id和他的名字。

我可以显示除了老板的名字之外的所有内容。如何在我的查询中管理它?

员工表:


| 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  | 

【问题讨论】:

    标签: mysql sql database


    【解决方案1】:

    再次加入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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-21
      • 2021-10-19
      • 2021-07-29
      相关资源
      最近更新 更多