이전 목록 다음
채택완료

sql 중복데이터 그룹화해서 출력하기 질문입니다.

2020-06-08 (월) 14:19:14 1,973

회원 테이블내에 전화번호가 중복인 데이터를 추출해야하는데요

Copy
SELECT phone, name, COUNT(name) AS cnt FROM member WHERE phone<> '' GROUP BY phone HAVING cnt > 1;


이렇게 했더니 중복하고 이름이 나오긴 하는데 중복된 이름이 전부 나오질 않습니다.

제가 원하는건

예를 들어 같은번호를 가진 회원이 3명이라면

1row에  중복된 전화번호ㄹ를 놓고 3명이 나오게 추출하고싶은데.. 불가능할까요?

1

전화번호

홍길동

임꺽정

2

전화번호

장길산

장영실

이런식으로요.. 도움좀 부탁드립니다.

|

답변 1개

채택된 답변
+20 포인트

이런식으로 해보세요.

Copy
<?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>

답변을 작성하려면 로그인이 필요합니다.