繁体   English   中英

如何合并多个表的结果?

[英]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表中有条目,那么它将显示NoREASON将包含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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM