Php 具有COUNT和ORDER BY和隐藏结果的MySQL查询

Php 具有COUNT和ORDER BY和隐藏结果的MySQL查询,php,mysql,Php,Mysql,我试图得到一个正确的查询,我可以按州显示数据,每个州都有商店,每个城市都有商店数量(每个城市的商店数量)。非常感谢您的帮助 California Los Angeles (5) San Diego (8) San Francisco (3) ... 现在,我有下面没有给我在每个城市的计数 $sql = "SELECT DISTINCT city, state FROM locations WHERE open = 'Y' ORDER BY state ASC"; $result = mysq

我试图得到一个正确的查询,我可以按州显示数据,每个州都有商店,每个城市都有商店数量(每个城市的商店数量)。非常感谢您的帮助

California
Los Angeles (5)
San Diego (8)
San Francisco (3)
...
现在,我有下面没有给我在每个城市的计数

$sql = "SELECT DISTINCT city, state FROM locations  WHERE open = 'Y' ORDER BY state ASC";
$result = mysqli_query($conn,$sql);
$num_columns = 1;
$rows = array();
while($row = mysqli_fetch_assoc($result)){
    if(!isset($rows[$row['state']])){
        $rows[$row['state']] = array();
    }
    $rows[$row['state']][] = $row['city'];
}
echo "<table>";
foreach($rows as $state => $cities){
    echo '<tr><th colspan="'. $num_columns .'">'. $state .'</th></tr>';
    $cityData = array_chunk ($cities, $num_columns); 
    sort($cityData);  // split array into chunk of $num_columns cities per array
    foreach($cityData as $row){
        echo "<tr>";
        for($i=0; $i<$num_columns; $i++){
            $city = isset($row[$i]) ? $row[$i] : "";
            echo "<td>$city</td>";
        }
        echo "</tr>";
    }
}
echo "</table>";
$sql=“从打开的位置选择不同的城市、州='Y'按州ASC排序”;
$result=mysqli\u查询($conn,$sql);
$num_列=1;
$rows=array();
while($row=mysqli\u fetch\u assoc($result)){
如果(!isset($rows[$row['state']])){
$rows[$row['state']]=array();
}
$rows[$row['state'][]=$row['city'];
}
回声“;
foreach($state=>$cities的行){
回显“.$state.”;
$cityData=array\u chunk($cities,$num\u columns);
排序($cityData);//将数组拆分为每个数组的$num_列块
foreach($cityData作为$row){
回声“;

对于($i=0;$i我可以建议以下
分组方式
查询:

SELECT
    city,
    state,
    COUNT(CASE WHEN open = 'Y' THEN 1 END) AS cnt
FROM locations
GROUP BY
    city,
    state
ORDER BY
    state;

我可以建议以下
分组方式
查询:

SELECT
    city,
    state,
    COUNT(CASE WHEN open = 'Y' THEN 1 END) AS cnt
FROM locations
GROUP BY
    city,
    state
ORDER BY
    state;