sql - 如何从不同的查询结果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 |
+---------+--------+----------+
我怎样才能做到这一点?
编辑抱歉,我无权创建新表或视图
解决方案
为什么不改变你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
推荐阅读
- android - 使用 SurfaceView 在活动上显示插页式广告的行为
- typescript - 打字稿接口:除了已知密钥之外的其他任何东西都必须是
? - javascript - 何检查内部文本是否小于 5 并在其中应用一个类
- java - 如何使用 jwt 为用户名和密码配置 webSecurity?
- php - 来自 mysqli 的 HTML 选择返回不完整的行数据
- office-js - 如何在 Officejs 中使用任务窗格实现启用/禁用命令
- php - WooCommerce 产品 set_product_url 方法不起作用
- spring-boot - AWS lambda JAVA 执行未从 Lambda 环境变量中获取 SPRING_PROFILE_ACTIVE
- laravel - 我如何在laravel中放置条件?
- python - 使用 forms.py 在 django 表单中插入换行符