脚本宝典收集整理的这篇文章主要介绍了php – 如何计算涉及多个表的多个列的平均值和计数?,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
computers (id,name) monITors (id,name) computer_monitor (id,computer_id,monitor_id) useractivity (id,userid,timestamp,computer_monitor_id,ip) useropinion (id,rating) user (id,name,email)
computer name and/or monitor name computer_monitor_id avg(rate) count(useractivity)
avg(rate)位于与名称匹配的特定computer_monitor_id上,计数相同.
没有连接到监视器的计算机在computer_monitor表中的监视器字段上的值为0,反之亦然,用于监视器 – >计算机.
useractivity和useropinion仅包含computer_monitor表中的ID
SELECT c.name AS ComputerName,m.name AS MonitorName,uo.Averagerating,ua.ActivityCount From computer_monitor cm LEFT JOIN computer c ON c.id = cm.COMputer LEFT JOIN monitor m ON m.id = cm.monitor INNER JOIN ( SELECT computer_monitor_id,AVG(rating) AS Averagerating From useropinion group by computer_monitor_id ) uo ON cm.id = uo.computer_monitor_id INNER JOIN ( SELECT computer_monitor_id,COUNT(*) AS ActivityCount FROM useractivity GROUP BY computer_monitor_id ) ua ON cm.id = ua.computer_monitor_id
实际上,正如您所看到的,首先聚合使用和使用,然后加入.这是为了避免当computer_monitor.id在useropinion和useractivity中匹配多行时的Cartesian product效果.
以上是脚本宝典为你收集整理的php – 如何计算涉及多个表的多个列的平均值和计数?全部内容,希望文章能够帮你解决php – 如何计算涉及多个表的多个列的平均值和计数?所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。