Php 整合MySQL查询结果

Php 整合MySQL查询结果,php,mysql,consolidation,Php,Mysql,Consolidation,我有一个PHP应用程序从MySQL数据库检索数据。当PHP查询数据库时,结果会被提取出来,所有输出行都会打印到屏幕上,但在顶部还会打印一个图形,显示输出行。如下所示(这是一个24行的垂直条形图,因为MySQL从代表PHP执行的查询中生成了24行输出) 如果用户运行一个产生大量结果的查询,我面临的问题就会出现。下面的第二张图片是MySQL在PHP应用程序中代表PHP使用不同的可选参数进行查询时生成的150个结果的可视化表示。我想有一个最大数量的垂直线(例如,让我们说50)。当一个查询产生超过50

我有一个PHP应用程序从MySQL数据库检索数据。当PHP查询数据库时,结果会被提取出来,所有输出行都会打印到屏幕上,但在顶部还会打印一个图形,显示输出行。如下所示(这是一个24行的垂直条形图,因为MySQL从代表PHP执行的查询中生成了24行输出)

如果用户运行一个产生大量结果的查询,我面临的问题就会出现。下面的第二张图片是MySQL在PHP应用程序中代表PHP使用不同的可选参数进行查询时生成的150个结果的可视化表示。我想有一个最大数量的垂直线(例如,让我们说50)。当一个查询产生超过50行时,我们将MySQL结果合并为50行进行可视化。我仍然会打印图表下方的所有行,以便用户可以查看任何一个结果,如果他们愿意的话。我的问题是,在CPU周期方面,在代码中不太难理解和遵循的情况下,什么是实现这一点的最佳方法?

我的一个想法是在PHP应用程序中解决这个问题,我只需将MySQL输出的行数除以50(同样,假设简单的数字,在本例中,四舍五入是一个简单的问题)。如果MySQL生成500行,500除以50等于10,那么我使用每10行在条形图上画一条垂直线

另一个想法是在MySQL中解决这个问题。我可能会运行MySQL查询,然后将结果复制到一个变量,然后对每10行选择一个查询运行第二个查询,或者如果有某种方法可以在MySQL中进行整合,然后向PHP提供第二个更小的数据集

解决这一问题的最佳地点在哪里?为什么?如何解决?

更新

按照进一步解释的要求,这是一个非常基本的场景:

结果如下所示,每行都是一个整数值和一个时间戳(条形图显示时间段[X轴]上的值[Y轴])


当MySQL生成150行输出时,我们得到的结果与上面的第二个图类似。我试图创建一个合并功能,因为如果查询生成300个结果或示例,条形图中的线条几乎看不见,因为它们太细了。这成为了一个不必要的视觉粒度级别。

我自己在PHP应用程序中非常简单地解决了这个问题,而不是让SQL来完成这项工作

在应用程序中,我有一个包含所有MySQL结果行的数组。PHP循环遍历每个数组条目,echo输出Javascript,将其显示为条形图上的垂直条

在循环之前插入此代码以一种简单且足够的方式解决了问题

$maxbars = 50;
if(count($array_mysql_resutls)>$maxbars) {
    $devision = count($array_mysql_resutls)/$maxbars;
    $resultsarray = Array();
    for($i = 0; $i < $maxbars; $i++) {
        $resultsarray[$i] = $array_mysql_resutls[ceil($devision*$i)];
    }
    $graph_traces = $resultsarray;
}
$maxbar=50;
if(计数($array\u mysql\u resutls)>$maxbar){
$division=count($array\u mysql\u resultls)/$maxbar;
$resultsarray=Array();
对于($i=0;$i<$maxbar;$i++){
$resultsarray[$i]=$array\u mysql\u resultls[ceil($division*$i)];
}
$graph_traces=$resultsarray;
}

最重要的是,我们正在对分割的数字(
ceil()
)进行四舍五入,以便在结果集中均匀分布。

您是否可以在此处发布一些示例代码/查询?关于您的逻辑有什么想法吗?@Maximus2012我已经按照要求更新了问题,我希望这就是您的要求。您正在使用什么查询生成这两个图?@Maximus2012我看不出这有什么关系?我尽量不把问题复杂化。这些图是由PHP和Javascript生成的,而不是由MySQL生成的。如果有这么大的不同,那么假设查询是
SELECT value,timestamp FROM tblStuff,其中timestamp>=“1234-01-01 00:00”和timestamp请记住,当没有模50数字时,您需要考虑舍入。
$maxbars = 50;
if(count($array_mysql_resutls)>$maxbars) {
    $devision = count($array_mysql_resutls)/$maxbars;
    $resultsarray = Array();
    for($i = 0; $i < $maxbars; $i++) {
        $resultsarray[$i] = $array_mysql_resutls[ceil($devision*$i)];
    }
    $graph_traces = $resultsarray;
}