使用group by时如何计算列中的行数
Posted
技术标签:
【中文标题】使用group by时如何计算列中的行数【英文标题】:how to count rows from a column while using group by 【发布时间】:2014-07-22 09:27:43 【问题描述】:我陷入了计数问题。谁能看看我下面的代码并告诉我如何从第一个while循环开始计数,即$query。这是分组的两列,我只想添加另一个列名,而不分组仅计算行数。喜欢
"SELECT CountryCode,NetID,COUNT(OpCode) as count FROM activecon WHERE OpCode='$thisActiveOp' GROUP BY CountryCode,NetID"
我尝试了上述方法,但我不知道如何使用底部代码来回显这个 COUNT(OpCode),我在底部代码中使用 $countryValue 和 $networkValue 来回显我的表格行。
$query=mysql_query("SELECT CountryCode,NetID FROM activecon WHERE OpCode='$thisActiveOp' GROUP BY CountryCode,NetID") or die(mysql_error());
while($row = mysql_fetch_array($query))
echo "<tr><td>$thisActiveOp</td>";
$networkID = $row['NetID'];
$countryID = $row['CountryCode'];
$query2=mysql_query("SELECT countryName,networkName FROM connection_details WHERE countryId='$countryID' AND netId='$networkID'") or die(mysql_error());
while($row2 = mysql_fetch_array($query2))
$countryValue = $row2['countryName'];
$networkValue = $row2['networkName'];
echo "<td>$countryValue</td><td>$networkValue</td></tr>";
【问题讨论】:
要回显它,请使用别名(您已使用as count
为列指定别名 count
你为什么不能只使用你的第一个 SQL 的 sn-p,然后写一些类似 $count = $row['count'];
的东西?
【参考方案1】:
我认为您建议的代码应该可以工作,所以它将是:
$query=mysql_query("SELECT CountryCode,NetID,COUNT(OpCode) as code FROM activecon WHERE OpCode='$thisActiveOp' GROUP BY CountryCode,NetID") or die(mysql_error());
while($row = mysql_fetch_array($query))
echo "<tr><td>$thisActiveOp</td>";
$networkID = $row['NetID'];
$countryID = $row['CountryCode'];
$code = $row['code'];
$query2=mysql_query("SELECT countryName,networkName FROM connection_details WHERE countryId='$countryID' AND netId='$networkID'") or die(mysql_error());
while($row2 = mysql_fetch_array($query2))
$countryValue = $row2['countryName'];
$networkValue = $row2['networkName'];
echo "<td>$countryValue</td><td>$networkValue</td><td>$code</td></tr>";
【讨论】:
【参考方案2】:您可以使用别名从mysql返回的数组中访问计数。
但是,根据您的数据的详细信息,您的脚本/sql 可能会简化为此(即假设 activecon 上的每条记录在 connection_details 上只有 1 条记录):-
<?php
$query=mysql_query("SELECT b.countryName, b.networkName, COUNT(a.OpCode) AS `count`
FROM activecon a
INNER JOIN connection_details b
ON a.CountryCode = b.countryId AND a.NetID = b.netId
WHERE a.OpCode='".mysq_real_escape_string($thisActiveOp)."'
GROUP BY b.countryName, b.networkName") or die(mysql_error());
while($row = mysql_fetch_array($query))
echo "<tr><td>$thisActiveOp</td><td>".$row['countryName']."</td><td>".$row['networkName']."</td><td>".$row['count']."</td></tr>";
【讨论】:
以上是关于使用group by时如何计算列中的行数的主要内容,如果未能解决你的问题,请参考以下文章