Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL 5.1.7两个表的条件联接,从第二个表中按日期选择顶部记录,从第一个表中选择所有记录_Mysql_Sql - Fatal编程技术网

MySQL 5.1.7两个表的条件联接,从第二个表中按日期选择顶部记录,从第一个表中选择所有记录

MySQL 5.1.7两个表的条件联接,从第二个表中按日期选择顶部记录,从第一个表中选择所有记录,mysql,sql,Mysql,Sql,我有两张桌子: 说明-每个人有一份唯一的记录 事件-每个人的多个记录;记录有各种类型 我需要检索指令列表,以及每个指令的最新日期的“约会”事件 我尝试过分组,但没有得到正确的结果 说明表: 事件表: 所需输出: id first_name surname telephone appointment comment ---- ------------ --------- ----------- ------------- ---------

我有两张桌子:

说明-每个人有一份唯一的记录 事件-每个人的多个记录;记录有各种类型 我需要检索指令列表,以及每个指令的最新日期的“约会”事件

我尝试过分组,但没有得到正确的结果

说明表:

事件表:

所需输出:

    id   first_name     surname     telephone   appointment   comment
   ---- ------------   ---------   ----------- ------------- ---------
    1    bob            marley      555-1234    2013-11-22    at home  
    2    steve          pike        555-3456    2013-12-05    at home
    3    daniel         osborne     555-9876    2013-09-17    office
    4    mark           hodge       555-6600
    5    stefan         belfant     555-6060

假设任何给定人员的最新/最长约会日期是唯一的,您可以编写:

SELECT instructions.*,
       latest_events.event_date AS appointment,
       latest_events.comment
  FROM instructions
  LEFT
 OUTER
  JOIN ( SELECT events.instruction_id,
                MAX(events.event_date) AS latest_event_date
           FROM events
          WHERE events.type = 'appointment'
          GROUP
             BY events.instruction_id
       ) latest_event_dates
    ON instructions.id = latest_event_dates.instruction_id
  LEFT
 OUTER
  JOIN events latest_events
    ON latest_event_dates.instruction_id = latest_events.instruction_id
   AND latest_event_dates.latest_event_date = latest_events.event_date
   AND 'appointment' = latest_events.type
;
如果最近/最长的约会日期不唯一,则需要在加入中添加另一个步骤,为给定的events.id和events.event\date选择MINevents.id或MAXevents.id或诸如此类的内容。

试试这个

SELECT I.id,
       I.first_name,
       I.surname,
       I.telephone,
       E.event_date,
       E.comment
FROM instructions I
LEFT JOIN
  (SELECT *
   FROM
     (SELECT *
      FROM EVENTS
      WHERE EVENTS.type='appointment'
      ORDER BY EVENTS.event_date DESC) EVENTS
   GROUP BY EVENTS.type,
            EVENTS.instruction_id ) E ON I.id=E.instruction_id

检查

最后,解决方案来自为我工作的一名员工。。。。它闪电迅速,完全符合要求:

选择i.id、ins.type、ins.event\u日期 根据指示一 左连接指令i on ins.id=选择inss.id 从事件到事件 其中inss.instruction_id=i.id,inss.type='约会' 按inss.event\u date DESC订购 限制1 ;

分组方法,无论我如何选择,总是返回奇怪的结果


非常感谢大家在这方面的帮助。

您尝试的问题在哪里?嗨,科米特;对不起,我正在尝试格式化表格,使它们看起来漂亮。没有多少成功。我将在1分钟内添加我的查询,感谢您帮助编辑并保持简洁。SQL:选择instructions.id、instructions.first\u name、instructions.姓氏、约会.status、,从指令左连接选择s1.*从指令左连接指令右连接指令右连接指令右连接指令右连接指令右连接指令右连接指令右连接指令右连接指令右连接指令右连接指令右连接指令右连接指令右连接指令右连接指令右连接指令右连接指令右连接指令右连接指令右连接指令右连接指令右连接指令右连接指令右连接指令右连接指令右连接指令左连接指令右连接指令右连接指令左连接指令右连接指令右连接指令右连接指令右连接指令右连接指令右连接指令右连接指令右连接指令右连接指令右连接指令右连接指令右连接;谢谢鲁克;直接复制和粘贴SQL时,我遇到以下错误:;错误1054 42S22:在“on”子句“mysql>中的未知列“latest_event_dates.event_date”我编辑了该评论,指出约会日期不是唯一的。可以设置多个约会。我们需要结果中最近的约会日期。@StephenGrant:也许我误解了你,但是。此查询不要求约会日期是唯一的,只要最近的约会日期是唯一的。我的意思是-如果有很多约会都使用相同的指令ID,只要有一个唯一的最新约会使用该指令ID,就可以了。你明白我的意思吗?是的,我想我明白你的意思;虽然可能有并且实际上有几个约会日期的时间戳,但它们是唯一的。不会有重复的相同约会。从精神上讲,我们需要知道下一次约会的日期。@StephenGrant:酷。那么这个查询应该满足您的要求;我已尝试使您的查询正常工作,但不断出现错误。我已经修改了之前的一个建议,以包括准确的表创建和插入结果:+--+--+--+--+--+--+--+--+--+--+--id |名字|姓|电话|事件|日期|注释|+--+--+--+--+--+--+--+--3 | Stefan | Mazy