是否可以将特定查询中计算的值用于另一个查询


can the value being calculated in a particular query be used in another query?

我以这种方式计算一个参数(X):

<?php
$link=mysql_connect("localhost","root","");
mysql_select_db("hand");
$result = mysql_query("select * from sessions",$link);
$num_calls = mysql_num_rows($result);
echo '<br/>'."'n Total X :'n $num_calls ".'<br/>';
?>

我正在以这种方式计算另一个参数(Y):

<?php
mysql_connect("localhost","root","");
mysql_select_db("hand");
$result = mysql_query("SELECT * FROM cars WHERE start_at > TIMESTAMPADD(WEEK, -4, CURDATE())  AND TIMESTAMPDIFF(MINUTE, start_at, end_at) > 5");
$num_rows = mysql_num_rows($result);
echo '<br/>'."'n Total Y :'n $num_rows ".'<br/>';
?>

在另一个地方,我需要计算口粮 X/Y。我该怎么做,因为它需要在同一 html 页面的另一个字段中完成。

你做:

$num_calls = intval($num_calls); // Make sure these are integers
$num_rows = intval($num_rows);
$calculation = $num_calls / $num_rows;
echo $calculation;

嗯首先,这是一种非常昂贵的计数方式。

Select Count(*) from Sessions

Select Count(*) from Cars...

所以像

Select Cast(Select Count(*) From Sessions) as FLOAT) / (Select Count(*) From Cars...)

应该让你接近。

然后你不需要费心坚持它,尽管如果你坚持,所有常用的机制都适用。

您可以将查询字符串放入如下所示的数组中:

$queryArray = array("select * from sessions", "SELECT * FROM cars WHERE start_at > TIMESTAMPADD(WEEK, -4, CURDATE()) AND TIMESTAMPDIFF(MINUTE, start_at, end_at) > 5");仅使用一次:

foreach($query in $queryArray) { $result = mysql_query($query); $count = mysql_count($result); $countList[] = $count }
$number = 0;现在,您需要从计数中的项目与另一个foreach
进行比率
foreach($number in $countList) {<br/> $number = $number + $number; }<br/> $ratio = $number / count($countList);

像这样,您可以将所有将来的查询添加为字符串,一切仍然有效。

附言我目前无法测试代码,但它应该非常实用。不太确定foreach as。

好的,

我想我明白了。

您需要 X:Y,其中 X 是与 Y 的比率:

$link=mysql_connect("localhost","root","");
mysql_select_db("hand");
$result = mysql_query("select * from sessions",$link);
$num_calls_x = mysql_num_rows($result);
$result = mysql_query("SELECT * FROM cars WHERE start_at > TIMESTAMPADD(WEEK, -4, CURDATE())  AND TIMESTAMPDIFF(MINUTE, start_at, end_at) > 5");
$num_calls_y = mysql_num_rows($result);
echo '<br/>'."'n Total X :'n $num_calls_x ".'<br/>';
echo '<br/>'."'n Total Y :'n $num_calls_y ".'<br/>';
echo 'Ratio: '.round(($num_calls_x/ $num_calls_y) * 100, 0);

您可以将此值放入session/cookie并在另一个位置读取。