sql 중복데이터 그룹화해서 출력하기 질문입니다.
본문
회원 테이블내에 전화번호가 중복인 데이터를 추출해야하는데요
SELECT phone, name, COUNT(name) AS cnt FROM member WHERE phone<> '' GROUP BY phone HAVING cnt > 1;
이렇게 했더니 중복하고 이름이 나오긴 하는데 중복된 이름이 전부 나오질 않습니다.
제가 원하는건
예를 들어 같은번호를 가진 회원이 3명이라면
1row에 중복된 전화번호ㄹ를 놓고 3명이 나오게 추출하고싶은데.. 불가능할까요?
1 |
전화번호 |
홍길동 |
임꺽정 |
2 |
전화번호 |
장길산 |
장영실 |
이런식으로요.. 도움좀 부탁드립니다.
!-->
답변 1
이런식으로 해보세요.
<?php
$sql = "SELECT phone, name, COUNT(name) AS cnt FROM member WHERE phone<> '' GROUP BY phone HAVING cnt > 1;";
$result = sql_query($sql);
$num = 1;
while ($row = sql_fetch_array($result)) {
$hp_name = array();
$sql2 = "SELECT phone, name FROM `member` WHERE `phone` = '".$row['phone']."'";
$result2 = sql_query($sql2);
while ($name_row = sql_fetch_array($result2)) {
$hp_name[] = $name_row['name'];
$name = implode("<br>",$hp_name);
}
$str .= "<tr>
<td>".$num."</td>
<td>".$row['phone']."</td>
<td>".$name."</td>
</tr>
";
$num++;
}
?>
<table>
<tr>
<td>순번</td>
<td>연락처</ td>
<td>이름</td>
</tr>
<?php echo $str; ?>
</table>
답변을 작성하시기 전에 로그인 해주세요.