Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 对每个MySQL行执行时间戳差异_Php_Mysql_Select - Fatal编程技术网

Php 对每个MySQL行执行时间戳差异

Php 对每个MySQL行执行时间戳差异,php,mysql,select,Php,Mysql,Select,我的MySQL查询有点问题,这是我的MySQL数据库结构: 表用户 hid(PK) 表格请求 id (PK), hid, word, time 表格点击 id, rid (FK),time 我应该得到请求和相关点击之间的平均时间。。。我尝试过这个,但我不确定它是否正常工作: SELECT TIMESTAMPDIFF(SECOND,r.time,c.time) FROM requests r RIGHT JOIN clicks c ON r.id=c.rid WHERE r.hid='$

我的MySQL查询有点问题,这是我的MySQL数据库结构:

表用户

hid(PK)
表格请求

id (PK), hid, word, time
表格点击

id, rid (FK),time
我应该得到请求和相关点击之间的平均时间。。。我尝试过这个,但我不确定它是否正常工作:

SELECT TIMESTAMPDIFF(SECOND,r.time,c.time) 
FROM requests r RIGHT JOIN clicks c ON r.id=c.rid 
WHERE r.hid='$hid'
有人能告诉我我做得对不对,并解释为什么我做得不对吗?我得到一些数字作为查询结果,但它们似乎不正确

如果你想得到平均时间,你忘了在查询中使用它,这看起来很好,除了忘了平均结果

试试这个:

SELECT AVG(TIMESTAMPDIFF(SECOND,r.time,c.time)) as avg_secs_diff
FROM requests r RIGHT JOIN clicks c ON r.id=c.rid 
WHERE r.hid='$hid'
GROUP BY r.hid

r.time和c.time的数据格式是什么?你想要什么样的产出?以秒为单位的时间?两列的数据类型?创建sql fiddle提示:根据您指定的需要使用微秒作为单位。谢谢diEcho,这正是我所需要的:是的,对不起,我忘了编写thr AVG函数,但是查询的其他部分正确吗?试试我的,自己看看。我建议创建临时表/数据,其中只有您可以控制值,并查看您是否总能获得正确的预期结果。我很自信我的答案是正确的:对不起,也许我不清楚。您的查询只返回1行,我想做的是:对于每个请求,并不总是与关系r.id=c.rid相关联的单击。对于每个具有关联单击的请求,我必须获得请求时间和该请求的单击时间之间的平均时间差。不过,谢谢你的回答:这不是OP要求的