php - MYSQL + PHP 将两行数据显示为单列

标签 php mysql

我有一个包含以下格式数据的表格

region   gender  age_group  population 

Dallas    M        1          200  
Dallas    F        1          500 
NY        M        1          320 
NY        F        1          310 
Dallas    M        2          300 
Dallas    F        2          600 
NY        M        2          400 
NY        F        2          800 

我正在寻找以以下格式输出数据的最佳查询

region/age_group      1           2
Gender             M     F       M    F
Dallas             200   500    300  600
NY                 320   310    400  800

我的查询仅返回顶部列和区域。不确定如何将顶栏分割为性别,如上面所示

SELECT distinct (region), a.group_one, b.group_two 
FROM city_populations c  
LEFT JOIN city_populations AS a ON a.age_group=1 AND c.age_group=a.age_group  
LEFT JOIN city_populations AS b ON b.age_group=2 AND c.age_group=a.age_group  

最佳答案

//首先我从数据库中获取所有数据

$result = mysql_query("select * from test2")or die(mysql_error());
$regions = array();
$age_groups = array();
while($det = mysql_fetch_array($result)){

    if(!in_array($det['region'], $regions)){
        $regions[] = $det['region'];
    }
    if(!in_array($det['age_group'], $age_groups)){
        $age_groups[] = $det['age_group'];
    }
    $rows[] = $det;
}

//然后在php中处理以显示为你想要的

echo "<table>";
echo "<tr><td>Age group</td>";
foreach($age_groups as $keyAG => $valueAG){
    echo "<td colspan='2'>$valueAG</td>";
}
echo "</tr>";
echo "<tr><td>Gender</td>";
foreach($age_groups as $keyAG => $valueAG){
    echo "<td>M</td>";
    echo "<td>F</td>";
}
echo "</tr>";
foreach($regions as $keyR => $valueR){

    echo "<tr>";
    echo "<td>".$valueR."</td>";
    foreach($age_groups as $keyAG => $valueAG){

        foreach($rows as $keyROWS => $valueROWS){
            if($valueROWS['region'] == $valueR && $valueROWS['age_group'] == $valueAG){
                if($valueROWS['gender'] == 'M'){
                    echo "<td>".$valueROWS['population']."</td>";
                }
                elseif($valueROWS['gender'] == 'F'){
                    echo "<td>".$valueROWS['population']."</td>";
                }
            }
        }
        $data[$valueR][$valueAG] = array($maleValue, $femaleValue);

    }
    echo "</tr>";
}
echo "</table>";

注意:强烈建议使用 mysqli_* 而不是 mysql。

关于php - MYSQL + PHP 将两行数据显示为单列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14170893/

相关文章:

php - 如何在mysql中用php删除一行?

mysql仅授予对一个表及其某些列的选择权限

javascript - 如何在 JPlayer 的 Javascript onClick 事件中使用动态元素 ID

php - 使用分页将散列附加到 Laravel 中的 url

php - Mysql根据某种条件选择某个字段

mysql - 将 CSV 文件上传到 MySQL Docker 容器时的权限问题

javascript - Jquery ajax 不工作(Laravel 4)

php - ajax 表单请求不适用于 mod_rewrite

php - Ruby on Rails 与 Wordpress 集成

mysql - Eloquent where() 语句