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/68.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根据另一个表中的最大值选择一个表中的所有行_Mysql_Sql_Database_Join_Max - Fatal编程技术网

MySql根据另一个表中的最大值选择一个表中的所有行

MySql根据另一个表中的最大值选择一个表中的所有行,mysql,sql,database,join,max,Mysql,Sql,Database,Join,Max,我希望能够从下面的表1和表3中获得所有数据,但除此之外,我还希望从表2中获得最新的应用程序阶段。通过获取每个应用程序的最大阶段\日期来确定最新的应用程序阶段 表1:应用 表2:应用程序进度 编辑:第三个表格 表3:申请人 返回数据集 我正在努力解决这个问题,希望能得到任何帮助 PS.试图给出sqlfiddle的一个例子,但它马上就失败了。如果在此之前没有答案,我将在备份时使用sqlfiddle更新它。您可以使用相关子查询来完成此操作: select a.*, (select app

我希望能够从下面的表1和表3中获得所有数据,但除此之外,我还希望从表2中获得最新的应用程序阶段。通过获取每个应用程序的最大阶段\日期来确定最新的应用程序阶段

表1:应用

表2:应用程序进度

编辑:第三个表格

表3:申请人

返回数据集

我正在努力解决这个问题,希望能得到任何帮助


PS.试图给出sqlfiddle的一个例子,但它马上就失败了。如果在此之前没有答案,我将在备份时使用sqlfiddle更新它。

您可以使用相关子查询来完成此操作:

select a.*,
       (select application_stage
        from application_progress ap
        where ap.application_id = a.id
        order by stage_date desc
        limit 1
       ) MostRecentStage
from applications a;
编辑:

您可以使用以下内容加入申请者数据:

select a.*, aa.*,
       (select application_stage
        from application_progress ap
        where ap.application_id = a.id
        order by stage_date desc
        limit 1
       ) MostRecentStage
from applications a join
     applicant aa
     on a.applicant_id = aa.id;

你能在你的查询中展示你到目前为止尝试过的东西吗?直接发布在这里,不需要SQL FIDLE。谢谢戈登。我正试图扩展它,引入第三个表,以便获得申请者的当前状态,并对您的代码进行如下调整:选择申请者。*,从应用程序\进度中选择应用程序\阶段加入应用程序\进度中的应用程序。应用程序id=applications.id,其中应用程序\进度。应用程序\ id=applications.id按应用程序顺序\进度。状态\日期描述限制1作为当前\阶段,来自申请人;但这对我不起作用。我将如何调整您的代码来实现这一点?谢谢。@AdrianWalls。我在代码中没有看到第三个表。只是子查询中应用程序的不必要连接。我将第三个表添加到原始帖子中。我想从申请者表中获取所有申请者及其当前申请阶段?然后,在主查询中选择所有申请者时,我是否不需要在子查询中加入申请和申请进度?
id  | applicant_name | applicant_address | programme_id 
------------------------------------------------------
300   Applicant 1      abc                 1    
310   Applicant 2      xyz                 2    
320   Applicant 3      xyz                 2    
330   Applicant 4      xyz                 2    
340   Applicant 5      xyz                 2    
applicant_id | applicant_name | current_stage
---------------------------------------------------------
300            Applicant 1      PHASE1
310            Applicant 2      DRAFT
320            Applicant 3      DRAFT 
330            Applicant 4      DRAFT   
340            Applicant 5      APPLICATION
select a.*,
       (select application_stage
        from application_progress ap
        where ap.application_id = a.id
        order by stage_date desc
        limit 1
       ) MostRecentStage
from applications a;
select a.*, aa.*,
       (select application_stage
        from application_progress ap
        where ap.application_id = a.id
        order by stage_date desc
        limit 1
       ) MostRecentStage
from applications a join
     applicant aa
     on a.applicant_id = aa.id;