쪽지부분 sql 질문이요~

쪽지부분 sql 질문이요~

QA

쪽지부분 sql 질문이요~

본문

받는쪽지, 보낸쪽지를 구분하지 않고 한번에 통합시키려고 합니다

여차저차 삽질을 해서


$sql = "select * from 
            (select a.*, CONCAT(me_send_mb_id, ' to ',me_recv_mb_id) as test1 
            from g5_memo a where a.me_recv_mb_id = '{$member[mb_id]}' or a.me_send_mb_id = '{$member[mb_id]}'
            order by a.me_id desc) as memo group by test1 order by memo.me_id desc";

이렇게 리스트를 불러왔는데

서로 쪽지를 주고받았다면 A가 B에게 보낸 쪽지, B가 A에게 보낸쪽지 총 2개가 출력되더라구요


for($i=0; $i<count($memo); $i++) {
    if($memo[$i][me_send_mb_id] == $memo[$i][me_recv_mb_id]) continue;    
    if($memo[$i][me_send_mb_id] == $member[mb_id]) { 
        $temp[$i] = $memo[$i][me_recv_mb_id];                           
                                                                           
        for($j=0; $j<count($memo); $j++) {
            if($memo[$j][me_send_mb_id] == $temp[$i]) {                    
                $i_datetime = strtotime($memo[$i][me_send_datetime]);   
                $j_datetime = strtotime($memo[$j][me_send_datetime]);   
                
                if($i_datetime > $j_datetime) {                          
                    array_push($del_memo, $j);                           
                } else if($i_datetime < $j_datetime) {       
                    array_push($del_memo, $i);                           
                }
            }
        }
    }
}
for($i=0; $i<count($del_memo); $i++) {
    unset($memo[$del_memo[$i]]);
}
$memo = array_values($memo);

그래서 위 코드로 php상에서 쪽지 발송시간을 기준으로 더 오래된 쪽지는 삭제해서 중복을 제거했는데요.

 

이렇게 겨우 만들긴했는데 쪽지의 양이 많을경우엔 속도가 너무 느려가지고

페이징처리를 하려고하는데요

sql에서 정리를해서 받아오는게아니라 php에서 정리를 하기때문에

sql 상에서 count로 전체레코드 갯수 받아오는거랑 리스트에 들어있는 쪽지들 갯수랑 맞지가 않아서 페이징처리가 힘드네요

 

php로 중복제거할 필요 없이 sql로만 중복되는걸 제외하고 불러올수 있을까요?

이 질문에 댓글 쓰기 :

답변을 작성하시기 전에 로그인 해주세요.
전체 1

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT