MySQL>仅比较和报告某些行的时差

时间:2017-07-05 18:43:07

标签: php mysql

我正在处理一份新报告,而且我无法弄清楚逻辑。我有一个类似于以下的表:

ost_thread_entry osTicket table

M =消息(每个线程只有一个) R =响应(可以有任意数量的响应) N =注意(报告不需要,可以通过附加的WHERE语句排除)。 为每个thread_id获取type = M列的时间,然后获取FIRSTST = R时间,比较这两次并报告如



.thread_col {
  width: 80px;
}

.report_col {
  width: 200px;
}

th {
  text-align: left;
}

<table>
  <tr>
    <th class='thread_col'>Thread</th>
    <th class='report_col'>Time to First Response</th>
  </tr>
  <tr>
    <td>2</td>
    <td>124 Minutes</td>
  </tr>
  <tr>
    <td>3</td>
    <td>18 Minutes</td>
  </tr>
  <tr>
    <td>4</td>
    <td>22 Minutes</td>
  </tr>
</table>
&#13;
&#13;
&#13;

我尝试了一些东西,但我的MySQL有点生疏。我假设我们在那里需要子查询?

1 个答案:

答案 0 :(得分:1)

这听起来就像一个自我加入我:

SELECT t.*, MIN(t1.created) 
FROM t 
LEFT JOIN t as t1 ON t1.thread_id = t.thread_id AND t1.type = 'R' 
WHERE t.type = 'M' 
GROUP BY t.thread_id

从表中选择所有类型M,然后将最短的响应时间加入其中。 必须是LEFT JOIN,因为并非所有消息实际上都有响应。你需要这个小组,因为他们可以有不止一个回应。

然后你有两次,可以用PHP计算输出的分钟差异。