加入三个表Employee,Eventcelibration,emp_event时遇到问题。
Employee表具有三个字段birth_date,date_of_joining,Anniversary_date。
想根据以上三列进行查询。如果雇员有生日,则从其他表eventlibration中选择birth_day描述;如果他今天有加入日期,则从表中选择加入消息。像明智的人。
如下查询一些虚拟数据。
员工表
id
employee_id
name
designation
contactno
email
birth_date
date_of_joining
表事件初始化
Event_cl_id
Event_type
frequency
description
template
subject
第三张表
Emp_event
Event_id
employee_id.
我已经尝试过查询,
select a.employee_id,a.name,a.email,a.birth_date,c.template,c.description,c.subject,c.event_type from
employee a inner join emp_event b on a.id = b.Event_id
inner join eventcelebration c on b.employee_id = c.event_cl_id
where CAST(birth_date as date) = CAST(curdate() as date) or CAST(date_of_joining as date) = CAST(curdate() as date)
它返回三个结果,但我只想要一个生日,因为生日是今天。
答案 0 :(得分:0)
仅在选择查询中选择a.birth_date
。
select a.birth_date from
employee a inner join emp_event b on a.id = b.Event_id
inner join eventcelebration c on b.employee_id = c.event_cl_id
where CAST(birth_date as date) = CAST(curdate() as date) or CAST(date_of_joining as date) = CAST(curdate() as date)
答案 1 :(得分:0)
您正在考虑日期数据类型,其中包括年份。 在这种情况下,对于年度事件,仅月份和月份中的日期无关紧要。 我希望以下查询对您有帮助
SELECT a.employee_id,a.name,a.email,a.birth_date,c.template,c.description,c.subject,c.event_type FROM
employee a INNER JOIN emp_event b ON a.id = b.Event_id
INNER JOIN eventcelebration c ON b.employee_id = c.event_cl_id
WHERE DATE_FORMAT(birth_date,'%m-%d') = DATE_FORMAT(CURDATE(),'%m-%d')
OR DATE_FORMAT(date_of_joining,'%m-%d') = DATE_FORMAT(CURDATE(),'%m-%d');
希望这会有所帮助