mysql - 合并两个 MySQL 表而不重复(上一个主题没有提供解决方案)
问题描述
我在这里处于理智的边缘。在发布我的问题之前,我已经查看了可能的解决方案,但我找不到任何可以解决我的问题的方法。
我有三个具有以下布局的表:
Employee User_logs Assessment
|----------------| |----------------------|-------| |----------------------|-------|
| empID | uName | | checkindate | status | FK_ID | | asDate |saResult | FK_ID |
|----------------| |----------------------|-------| |----------------------|-------|
| 1 | Tino | | 2020-04-04 | Clear | 1 | | 2020-04-04 | Pass | 1 |
| ... | ... | | 2020-05-05 | Fail | 1 | | 2020-05-05 | Pass | 1 |
| ... | ... | | 2020-07-07 | Fail | 1 | | 2020-06-06 | Fail | 1 |
| ... | ... | | 2020-08-08 | Clear | 1 | | 2020-08-08 | Pass | 1 |
| ... | ... | |------------------------------| | 2020-09-09 | Pass | 1 |
|----------------| |------------------------------|
empID 是我在表 User_Logs 和 Assessment 中用作外键的主键。我正在寻找的预期结果如下:
Result
| FK_ID | resultDate | Status| Result |
|----------------------------------------|
| 1 | 2020-04-04 | Clear | Pass |
| 1 | 2020-05-05 | Fail | Pass |
| 1 | 2020-06-06 | | Fail |
| 1 | 2020-07-07 | Fail | |
| 1 | 2020-08-08 | Clear | Pass |
| 1 | 2020-09-09 | | Pass | <---- Not shown
|----------------------------------------|
我确实很接近以下代码,但是由于某种原因,它没有在 2020-09-09 的最后一个条目中出现:
SELECT A.checkindate, A.status, B.saDate, B.saResult
FROM myDatabase.User_logs AS A
LEFT JOIN (
SELECT DISTINCT saDate, saResult, FK_empID
FROM myDatabase.assesment
) AS B
ON B.FK_empID = 1
AND B.saDate = A.checkindate
WHERE A.FK_empID = 1
ORDER BY A.checkindate DESC
我做错了什么或没有看到?
解决方案
SELECT e.empID, d.resultDate, u.Status, a.saResult Result
FROM Employee e
CROSS JOIN ( SELECT checkindate resultDate
FROM User_logs
UNION
SELECT asDate
FROM Assessment ) d
LEFT JOIN User_logs u ON e.empID = u.FK_ID AND d.resultDate = u.checkindate
LEFT JOIN Assessment a ON e.empID = a.FK_ID AND d.resultDate = a.asDate
-- WHERE COALESCE(u.Status, a.saResult)
-- ORDER BY empID, resultDate
推荐阅读
- vue.js - Vue.js 错误:无法读取未定义的属性“过滤器”
- python - Scipy TypeError:在优化中使用 dogleg 时,只能将 size-1 数组转换为 Python 标量,为什么?
- javascript - 单个 onChange 仅用于一种形式
- jenkins - 节点无法识别 Jenkins 标签
- javascript - 无法将用户文件转移给新所有者
- tfs - .Net-Core Proj - MSBuild 无法复制到输出文件夹
- java - 在springboot上使用maven安装JCOSap
- tensorflow - 奇怪的张量
- python-3.x - 基于 groupby sum() 过滤数据帧
- python - 如何通过鼠标单击获取 wx 画布中的 x 轴值?