Mysql 用于以下场景的SQL

Mysql 用于以下场景的SQL,mysql,sql,oracle,plsql,Mysql,Sql,Oracle,Plsql,数据库中有以下两个表。一个表是人员表,另一个表是入口表,入口表记录了人员进入一个部门的情况 人员表 Person Person_ID Person_NIC Person_Name Person_Last_Name Person_Age State 1 121212 ABC BCD 12 ACTIVE 2 212121

数据库中有以下两个表。一个表是人员表,另一个表是入口表,入口表记录了人员进入一个部门的情况

人员表

    Person                  
Person_ID   Person_NIC  Person_Name Person_Last_Name    Person_Age  State
1           121212          ABC         BCD              12         ACTIVE
2           212121          ABB         BBB              13         NONACTIVE
3           111111          BBB         CCC              14         ACTIVE
条目表

ENTRY           
Entry_ID  Person_ID Entry_Escort    Entry_Date  
1         1           David         20121210    
2         1           David         20130110    
3         1           David         20130111    
4         1           David         20130112    
5         1           David     20130113    
6         2           David     20121210    
7         2           David     20130110    
8         2           David     20130111    
9         2           David     20130112    
10        2           David     20130113    
我必须为以下场景编写sql。我需要找到1月份数据库中非活跃人员的最后输入日期。有人能帮我问一下吗。提前感谢您的帮助

试试这个:

Select 
p.*,
MAX(Entry_Date) 
from 
persons p
inner join entry ep on (p.Person_NIC=ep.Entry_ID)

where State='NONACTIVE'
GROUP BY ep.Entry_ID
试试这个:

Select 
p.*,
MAX(Entry_Date) 
from 
persons p
inner join entry ep on (p.Person_NIC=ep.Entry_ID)

where State='NONACTIVE'
GROUP BY ep.Entry_ID

这应该满足您的需要:

select p.person_id, p.person_nic, p.Person_Name, p.Person_Last_Name,
       max(e.entry_date) max_entry_date
 from person p
      inner join entry e
              on e.entry_id = p.person_nic
where p.state = 'NONACTIVE'
group by p.person_id, p.person_nic, p.Person_Name, p.Person_Last_Name

p、 在数据库表中存储年龄是不好的,因为您必须不断更新它。最好动态存储出生日期和计算年龄(或在视图/虚拟列中)

这应该满足您的需要:

select p.person_id, p.person_nic, p.Person_Name, p.Person_Last_Name,
       max(e.entry_date) max_entry_date
 from person p
      inner join entry e
              on e.entry_id = p.person_nic
where p.state = 'NONACTIVE'
group by p.person_id, p.person_nic, p.Person_Name, p.Person_Last_Name

p、 在数据库表中存储年龄是不好的,因为您必须不断更新它。最好动态存储出生日期和计算年龄(或在视图/虚拟列中)

这应该很简单:

SELECT p.Person_ID, MAX(e.Entry_Date) as MaxEntryDate
FROM 
 Person p 
 INNER JOIN Entry e
   ON p.Person_NIC = e.EntryID
WHERE p.State = 'NONACTIVE'
   AND Entry_Date  BETWEEN 20130101 AND 20130131
GROUP BY p.Person_ID

这应该像这样简单:

SELECT p.Person_ID, MAX(e.Entry_Date) as MaxEntryDate
FROM 
 Person p 
 INNER JOIN Entry e
   ON p.Person_NIC = e.EntryID
WHERE p.State = 'NONACTIVE'
   AND Entry_Date  BETWEEN 20130101 AND 20130131
GROUP BY p.Person_ID

请试试这个:更新为您需要的一月


请试试这个:更新为您需要的一月



问题中缺少条目表结构。我正在尝试添加,但stackoverflow没有在与person相关的条目中显示imageshow?那张表中有
个人id
吗?或者
entry\u id
映射到
person\u nic
?为什么不向我们展示一些示例数据的创建/插入sql编辑器:)最好根据示例数据指出您的预期结果。您仍然缺少条目表中的某个日期。。条目和人员之间没有关系…问题中缺少条目表结构..我正在尝试添加,但stackoverflow没有显示与人员相关的条目中的imageshow?那张表中有
个人id
吗?或者
entry\u id
映射到
person\u nic
?为什么不向我们展示一些示例数据的创建/插入sql编辑器:)最好根据示例数据指出您的预期结果。您仍然缺少条目表中的某个日期。。条目和人员之间没有关系…我需要查找1月份非活动人员的最后条目我需要查找1月份非活动人员的最后条目January@kltis在演示中,我更改了一些示例数据,使其具有
2月份的
,并触发了您后面提到的条件。如果使用
month()
,则它比将任何静态日期添加到查询中更具动态性;)@FlorinGhita当uesr开始不活动时,none active(无活动)是否定义了任何位置?您能告诉我为什么将p.person_nic和e.entry_id按section@Kltis事实上,在您的案例中,您不需要输入id,但如果此人已在同一条线上输入两次,则意味着他将拥有两个输入id,那么max date是相同的,但它有两个条目ID。。。除非它不会显示..@kltis在演示中检查,否则我将一些示例数据更改为具有
二月
以及触发您后面提到的条件。如果使用
month()
,则它比将任何静态日期添加到查询中更具动态性;)@FlorinGhita当uesr开始不活动时,none active(无活动)是否定义了任何位置?您能告诉我为什么将p.person_nic和e.entry_id按section@Kltis事实上,在您的案例中,您不需要输入id,但如果此人已在同一条线上输入两次,则意味着他将拥有两个输入id,那么max date是相同的,但它有两个条目ID。。。除非它不会显示出来。。