【发布时间】:2021-06-25 03:33:28
【问题描述】:
请帮我解决。
这里我想显示员工上班和下班日期的详细信息。
这是我的查询仍然被误解,
SELECT
*
FROM
(SELECT
e.NIK,e.Name,date(d.Enroll)AS attd
FROM
dvc0004 d, emp0003 e
WHERE
YEAR(d.Enroll)=YEAR(CURRENT_DATE())) AS subQuery1,
(select adddate('1970-01-01',t4.i*10000 + t3.i*1000 + t2.i*100 + t1.i*10 + t0.i) selected_date from
(select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t0,
(select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t1,
(select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t2,
(select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t3,
(select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t4)
AS subQuery3,
(SELECT
a.NIK, a.Name, s.ExcDesc, b.PeriodeIn, b.PeriodeEnd
FROM
emp0003 a, emp0016 b, sys0006 s, dvc0004 d
WHERE
a.EmployeeID=b.EmpID AND
b.ExcId=s.ExcID AND
a.NIK=d.NIK AND
s.ExcPay='T' AND YEAR(b.PeriodeIn)=YEAR(CURRENT_DATE())) AS subQuery2
WHERE date.selected_date BETWEEN queryA.PeriodeIn AND queryA.PeriodeEnd
AND subQuery1.NIK=subQuery2.NIK
在子查询 1 中:显示员工输入的日期。
在子查询 2 中:显示员工下班的时间。
在子查询 3 中:根据日期范围显示所有日期。
想要的查询结果:
| NIK | Name | Date | Presence |
|---|---|---|---|
| 012 | Rey | 01-01-2021 | Annual leave |
| 012 | Rey | 02-01-2021 | Attend |
| 012 | Rey | 03-01-2021 | Sick |
| 012 | Rey | 04-01-2021 | Truant |
| 012 | Rey | 05-01-2021 | Attend |
| 011 | Yoan | 01-01-2021 | Attend |
| 011 | Yoan | 02-01-2021 | Attend |
| 011 | Yoan | 03-01-2021 | Annual leave |
| 011 | Yoan | 04-01-2021 | Annual leave |
| 011 | Yoan | 05-01-2021 | Annual leave |
这是 fiddleDB 上的示例数据: https://dbfiddle.uk/?rdbms=mariadb_10.3&fiddle=57fe8cb377bbd54856abdad32d0d9cec
【问题讨论】:
-
什么 MySQL 版本?
-
请update your question,包括样本数据......那些可以返回所需结果的数据。
-
@FaNo_FN :对不起,数据库是 MariaDB 10.0.12
-
@FaNo_FN all sample all table?
-
嗯.. 是的所有表,但如果它很多,只要可以重现结果,您只需包含几行数据样本。您还可以使用小提琴创建架构并在此处插入示例数据:dbfiddle.uk/?rdbms=mariadb_10.3