我有一个表“数据”,其中包含“名称”“状态”列和其他一些
name state
peter MN
john NY
jay NY
sam CO
jack TX
jill NO
我想计算每个州的条目数,并希望我的输出如下:
NY: 125
MN: 21
CO: 17
TX: 10
NO: 59
等...
我有这样的查询
$stmt = $db->query("SELECT state, COUNT(*) FROM `data` GROUP BY state;");
$nums = $stmt->rowCount();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){
echo "<tr>
<td>" . $row["state"] . "</td>
<td>$nums</td>
</tr>";
}
这会显示我表中的每个状态,但不会返回该状态的相应条目数。这只返回状态数,即50.如何显示每个状态的条目数?
答案 0 :(得分:1)
$stmt = $db->query("SELECT COUNT(name) as occurances,state FROM `data` GROUP BY state;");
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){
echo "<tr>
<td>" . $row["occurances"] . "</td>
<td>" . $row["state"] . "</td>
</tr>";
}
试试此版本,仅选择名称
答案 1 :(得分:1)
您好像不是指具有计数的列。尝试别名,引用PHP代码中的别名:
$stmt = $db->query("SELECT state, COUNT(*) cnt FROM `data` GROUP BY state;");
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo "<tr>
<td>" . $row["state"] . ":</td>
<td>" . $row["cnt"] . "</td>
</tr>";
}