【问题标题】:how to count rows from a column while using group by使用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']; 的东西?

标签: php mysql sql


【解决方案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>";
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多