2013-01-05 3 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>"; 

참고 : mysql 대신 mysqli_ *를 사용하는 것이 좋습니다.

+0

@bhavick 감사합니다. 매력으로 작동합니다! 메신저가없는 곳의 행에 0을 표시하도록 수정하는 중입니다. 나는 이것을 일주일 이상 해왔다! 많은 감사 – Rico

관련 문제