我想使用某些查询的结果创建一个新表。我可能会以错误的方式看待这个问题,所以请随时告诉我。因此,我将尝试简化此问题,而不用让我的代码将每个员工编号与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 |
+---------+--------+----------+
我该怎么做?
编辑抱歉,我无权创建新表格或视图
答案 0 :(得分:1)
为什么不将您的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
答案 1 :(得分:0)
您可以只做一个基本的创建表,然后做一个insert select to
,它将以您需要的方式填充表。您所要做的就是将我提供的select语句替换为用来创建级别表输出的那条语句。
create table Levels
(
level1 varchar(25),
level2 varchar(25),
level3 varchar(25)
)
insert into Levels(level1, level2, level3)
select * from tables --here you would put the select statement that you used to create the information. If you dont have this script then let me know