MySQL查询根据第二级标准选择关系表的最大日期

时间:2015-11-04 20:20:47

标签: mysql redmine

这是我的SQLFIDDLE

基本上我有三个表,一个问题,期刊和期刊详细信息。 我想在一个查询中使用以下表示方式。

class TimelineViewController: UIViewController, TimelineComponentTarget {
var timelineComponent: TimelineComponent<Post, TimelineViewController>!



override func viewDidLoad() {
    super.viewDidLoad()

    timelineComponent = TimelineComponent(target: self)
    self.tabBarController?.delegate = self
}

适用的规则是X是最大的期刊&#39;创建日期&#39; fixed_version_id&#39; == 55存在。

请帮忙。

谢谢,

1 个答案:

答案 0 :(得分:1)

我建议您首先获取符合您要求的所有期刊的详细信息:

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。如果使用外部联接,则对于不符合条件的任何日记帐,您将获得null:

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示例。