[英]How to combine results from multiple tables?
我想在给定的日期范围内从多个表中打印数据
表
Users (PF_NO,NAME,DESIGNATION,LEVEL,DUTY_TYPE)
Holiday(id, DATE,PF_NO,Reason)
entry(id, DATE, PF_NO, f1,f2 etc)
我只提到了必填字段,所有表都由PF_NO
连接,所以基本上我想获得如下详细信息
| PF_NO | NAME | DESIGNATION |LEVEL |DATE| DUTY |DUTY_TYPE|REASON| F1|F2|
所以这里的情况是,如果用户在给定日期的Holiday
表中有条目,那么它将显示No
, REASON
将包含Holiday
表中的原因,并且REASON
后面的字段将为空白,如果他在给定日期中没有条目Holiday
表他在表entry
有一个条目,然后DUTY
将是Yes
并且DUTY_TYPE
将从users
表中打印,并且将打印表entry
其他详细信息,并且我想从给定日期生成报告。 请帮我
我试过什么?
NAME_OF_STAFF,PF_NO,DESIGNATION,LEVEL,BASIC,MOBILE,EMAIL
from user
Join holidays on(holiday_reason BETWEEN From_Date and To_DATE)
Select NAME_OF_STAFF,PF_NO,DESIGNATION,LEVEL,BASIC,MOBILE,EMAIL
from user
join holidays on id,PF_NO
join holidays_reason on ID
where date between
SELECT A.PF_NO,A.NAME,A.DESIGNATION,A.LEVEL,B.DATE,
CASE WHEN ISNULL(B.id,0)<>0 THEN 'No'
WHEN ISNULL(B.id,0)=0 && ISNULL(C.id,0)<>0 THEN 'Yes' END Duty,
CASE WHEN ISNULL(B.id,0)=0 && ISNULL(C.id,0)<>0 THEN ISNULL(A.Duty_type,'') ELSE '' END Duty_type,
ISNULL(Reason,'') as Reason, ISNULL(C.F1,'') C.F1,ISNULL(F2,'') F2
FROM user A LEFT JOIN holiday B on B.id = A.PF_NO
LEFT JOIN holidays_reason C on C.ID=A.PF_NO
where C.date BETWEEN From_DATE and To_DATE
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.