2013-01-05 44 views
0

我有一個數據表的格式如下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 
+0

我想你不知道如何格式化一個問題在這裏。更好地檢查提示,以在此格式化問題。 –

+0

謝謝,我只是做 – Rico

+0

我很抱歉我的朋友,如果我的話似乎是苛刻的你,但相信我只是想通知你,這裏真的很好的東西,可以幫助你格式化問題和答案。請不要介意,因爲我唯一的意圖是通知你。 –

回答

1

//首先我拿來從數據庫中的所有數據

$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。

+0

@bhavick謝謝。作爲魅力發揮作用!即時修改它在沒有人口的行中顯示0。我已經爲此工作了一個多星期!非常感謝 – Rico