我正在处理一份新报告,而且我无法弄清楚逻辑。我有一个类似于以下的表:
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;
我尝试了一些东西,但我的MySQL有点生疏。我假设我们在那里需要子查询?
答案 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计算输出的分钟差异。