【发布时间】:2011-06-28 13:10:51
【问题描述】:
我正在尝试合并 3 个表中的数据,但无法获得准确的语法。
我有一组数据如下,显示谁对记录做了什么的历史。每条记录的唯一标识符显示在“ID”中,“Rec No”是分配给与记录的每次交互的序号。
ID Rec No Who Type 1 1 鲍勃 新 1 2 鲍勃公开赛 1 3 鲍勃分配 1 4 莎拉 添加 1 5 鲍勃加 1 6 鲍勃·克洛斯 2 1 约翰·纽 2 2 约翰公开赛 2 3 约翰分配 2 4 鲍勃分配 2 5 莎拉 添加 2 6 莎拉关闭 3 1 莎拉 新 3 2 莎拉公开赛 3 3 萨拉分配 3 4 莎拉关闭我需要找到所有的“分配”操作。但是,如果某个 ID 中有多个“分配”,我想找到第一个。然后我还想找到这样做的人的姓名。
我现在的代码是-
mysql> SELECT IH.WHO, COUNT(IH.ID)
-> FROM INCIDENTS_H IH
-> JOIN(
-> SELECT ID, MIN(RECNO) AS RECNO
-> FROM INCIDENTS_H
-> WHERE TYPE = 'ASSIGN'
-> GROUP BY ID
-> )IH2
-> ON IH2.ID = IH.ID AND IH2.RECNO = IH.RECNO
-> GROUP BY IH.WHO
-> ;
产生输出
+--------+--------------+ |世界卫生组织 |计数(IH.ID) | +--------+--------------+ |鲍勃 | 1 | |约翰 | 1 | +--------+--------------+到目前为止一切顺利。但是,我还需要根据日期限制输出,该日期保存在另一个名为 Incidents 的表中。此表中的数据格式为-
+--------+------------+ |身份证 |添加日期 | +--------+------------+ | 1 | 2011-06-01 | | 2 | 2011-06-03 | +--------+------------+ID 列在两个表中的编号相同,因此可用于找出要使用的 ADDEDDATE。那么任何人都可以通过修改上面的代码来协助代码将输出限制为添加日期为 2011-06-03 的记录吗?
所以理想的输出应该是-
+--------+--------------+ |世界卫生组织 |计数(IH.ID) | +--------+--------------+ |约翰 | 1 | +--------+--------------+我正在使用 mysql 5.1.40
【问题讨论】: