繁体   English   中英

使用group by时如何计算列中的行

[英]how to count rows from a column while using group by

我陷入了计数问题。 任何人都可以看看我下面的代码,并告诉我如何从第一个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>";

}

我认为您建议的代码应该可以工作,因此它将是:

$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>";
}

您可以使用别名来从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>";
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM