MySQL 根据二级条件查询 select 关系 table 的最大日期

MySQL query to select the max date for the relation table based on criteria at second level

这是我的 SQLFIDDLE

基本上我有三个表,A issues,journals 和 journal details。 我想在单个查询中使用以下表示方式。

id    | status_id | X |
90001 | 12 | NULL |
90002 | 12 | NULL |
90003 | 12 | 2015-01-06 |
90004 | 12 | 2015-01-09 |

适用的规则是 X 是最大 'journals' 创建日期,在该日期 'fixed_version_id' == 55 存在。

请帮忙

谢谢,

我建议您首先获取满足您要求的所有期刊的详细信息,如下所示:

SELECT *
FROM journal_details
WHERE property = 'fixed_version_id' AND value = '55';

然后您可以使用这些值来获取满足此要求的 journal 行的创建日期:

SELECT j.issue_id, MAX(j.created_on) AS created_on
FROM journals j
JOIN journal_details jd ON jd.journal_id = j.id AND jd.property = 'fixed_version_id' AND jd.value = '55'
GROUP BY j.issue_id;

从这些结果中,您可以加入获得所有 issues。如果您使用外部联接,对于任何不符合条件的期刊,您将获得空值:

SELECT i.id, i.status_id, tmp.created_on
FROM issues i
LEFT JOIN(
  SELECT j.issue_id, MAX(j.created_on) AS created_on
  FROM journals j
  JOIN journal_details jd ON jd.journal_id = j.id AND jd.property = 'fixed_version_id' AND jd.value = '55'
  GROUP BY j.issue_id
) tmp ON tmp.issue_id = i.id;

这是一个 SQL Fiddle 示例。