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。。。除非它不会显示出来。。