성씨 분포도? 를 만들어 보려고 합니다.
본문
회원들 이름을 가지고
성씨 분포도? 를 만들어 보려고 합니다.
성을 중복없이 추출해서
김씨 3명 (김가나, 김다라, 김마바)
이씨 2명 (이가나, 이다라)
....
이런 식으로 표현하려고 아래 코드를 만들다 막혔습니다.
<?php
$sql1="select substr(mb_name,1,1) , count(*) from g5_member group by substr(mb_name,1,1)"; // 성만 추출
$f_name = sql_query($sql1);
while ( $row=sql_fetch_array($f_name) ) $list_f_name[] = $row;
echo $end=count($list_f_name);
//print_r2($list_f_name);
for($i=0; $i < $end; $i=$i+1) {
$sql2="select mb_name from g5_member where mb_name like '" .$list_f_name[$i]. "%'"; // 해당하는 사람 추출
$name = sql_query($sql2);
while ( $row=sql_fetch_array($name) ) $list_name[$i][] = $row; //여기가 문제인듯
}
print_r2($list_name);
?>
!-->
답변 3
<?php
$sql1="select substr(mb_name,1,1) lname , count(*) cnt from g5_member group by substr(mb_name,1,1)"; // 성만 추출
$f_name = sql_query($sql1);
while ( $row=sql_fetch_array($f_name) ) $list_f_name[ $row['lname']] = $row['cnt'];
print_r2($list_f_name);
?>
방법은 다양하게 있습니다.
이렇게 하면 이름들이 출력될겁니다.
select substr(mb_name,1,1) , COUNT(*),GROUP_CONCAT(mb_name ORDER BY mb_name ASC ) from g5_member group by substr(mb_name,1,1)
select substr(mb_name,1,1) , COUNT(*),GROUP_CONCAT(mb_id ORDER BY mb_id ASC ) from g5_member group by substr(mb_name,1,1)
이 쿼리를 한번 실행해 보시면 영감이 떠오르실겁니다.
!-->!-->방법들은 앞에서 제시해 주신대로 하면 되는데...
남씨와 남궁씨 등을 솎아내는 로직도 필요할 듯요.
거기에
남궁 민 과 남 궁민을 가려내는 것두요.
코드란게 작은 빈틈을 막는다는 것이 쉽지는 않습니다.
답변을 작성하시기 전에 로그인 해주세요.