首页 > 解决方案 > 如何从不同的查询结果SQL创建表

问题描述

我想使用一些查询的结果创建一个新表。我可能会以错误的方式看待这个问题,所以请随时告诉我。因此,我将尝试使这个问题变得简单,而不是让我的代码将每个员工编号与 table2 中的每个经理级别列相匹配

我有两张表,一张有员工姓名和员工编号示例

表格1

+-------------+-----------+-------------+-------------+
| emplpyeenum | firstname |   last name |    location |
+-------------+-----------+-------------+-------------+
| 11          |    joe    |    free     | JE          |
| 22          |   jill    |   yoyo      | XX          |
| 33          |    yoda   |   null      | 9U          |
+-------------+-----------+-------------+-------------+

和另一个表,每个经理级别下都有员工编号,所以基本上是一个层次结构示例

表 2

+---------+----------+----------+
| manager | manager2 | manager3 |
+---------+----------+----------+
|      11 |       22 |       33 |
+---------+----------+----------+

我想创建一个新表,除了数字之外还有名称,例如,但名称旁边有员工编号

+---------+--------+----------+
| level 1 | level2 |  level3  |
+---------+--------+----------+
| jill    |   joe  |    yoda  |
+---------+--------+----------+

我怎样才能做到这一点?

编辑抱歉,我无权创建新表或视图

标签: sql

解决方案


为什么不改变你table2的呢?

+------------+----------+
| EmployeeId | ManagerId|
+------------+----------+
|      11    |     NULL |
+------------+----------+
|      22    |     11   |
+------------+----------+
|      33    |     22   |
+------------+----------+

然后你可以用数据做你想做的事。至少您的数据将被正确规范化。在你的table2. 如果员工 33 雇用另一名低于他的员工会怎样?您将添加另一列?

根据您的可用表,这应该会给您想要的结果。

SELECT m1.firstname, m2.firstname, m3.firstname
FROM table2 t
LEFT JOIN table1 m1 ON m1.employeenum = t.manager
LEFT JOIN table1 m2 ON m2.employeenum = t.manager2
LEFT JOIN table1 m3 ON m3.employeenum = t.manager3

推荐阅读