mysql查询中面临的问题

时间:2019-07-19 04:35:58

标签: mysql

加入三个表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) 

它返回三个结果,但我只想要一个生日,因为生日是今天。

2 个答案:

答案 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');

希望这会有所帮助