php - MySQL > 仅比较和报告某些行的时间差异

标签 php mysql

我正在编写一份新报告,但无法弄清楚其中的逻辑。我有一个类似于以下的表格:

ost_thread_entry osTicket table

M=消息(每个线程只有一个) R=响应(可以有任意数量的响应) N=注释(报告不需要,可以通过附加 WHERE 语句排除)。 对于每个 thread_id 获取 type=M 列的时间,然后获取 FIRST type=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>

我尝试过一些东西,但我的 MySQL 有点生疏。我想我们需要在那里进行子查询?

最佳答案

这对我来说听起来像是自加入:

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 计算输出的分钟差。

关于php - MySQL > 仅比较和报告某些行的时间差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44933772/

相关文章:

PHP MySQL WAMP - 数据库错误

php - 工厂可用性监视器的想法

php - 获取 json 中的 Javascript 变量

Mysql 中等 int 与 int 性能

mysql - 更新/插入不时需要几秒钟

php - MySQL一对多关系,具有共享值

php - 如何为使用 cat/dev/null > 重置日志文件的 cronjob 编写 PHP 脚本

php - SQL - 如何使用联接在同一个表(使用子查询)上执行交集?

mysql - 查询重复值不同

java - 如何使用 java 在 mysql 中更新文件路径?