sql 좀 알려주세요 ㅋㅋ... > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

sql 좀 알려주세요 ㅋㅋ... 정보

sql 좀 알려주세요 ㅋㅋ...

본문

function get_member($mb_id, $fields='*')
{
    global $g4;

    return sql_fetch(" select $fields from $g4[member_table] where mb_id = TRIM('$mb_id') ");
}


대부분의 사이트에서 outlogin을 쓰고 있는데 outlogin 함수에서 항상 아래의 sql을 실행 합니다.

        $sql = " select count(*) as cnt from $g4[auth_table] where mb_id = '$member[mb_id]' ";


그래서, get_member를 수정해서 한번에 처리하게 하려는데 생각이 잘 안나네요. ㅠ..ㅠ

g4_member에서 회원정보를 가져오면서 g4_auth의 레코드 갯수를 가져오게 하는 sql 문장을
알려주세욤. 아무리 고민해도 금방 생각이 안나서 부탁드려욤. ^^


도움을 주신 분들의 덕분에 이제 그누보드 튜닝도 거의 끝마무리가 나고 있습니다.
  • 복사

댓글 전체

function get_member($mb_id, $fields='*')
{
    global $g4;

    $a = sql_fetch(" select $fields from $g4[member_table] where mb_id = TRIM('$mb_id') ");
    $b = sql_fetch(" select count(*) as cnt from $g4[auth_table] where mb_id = TRIM('$mb_id') ");
    $a[cnt] = $b[cnt];

    return $a;
}

대략 이렇게 하면 되겠네요..
SELECT t1.mb_id,t1.mb_no, COUNT(t2.mb_id) as cnt FROM g4_member AS t1
LEFT JOIN g4_auth AS t2 ON t1.mb_id = t2.mb_id
WHERE t1.mb_id = 'admin'
GROUP BY t1.mb_id

다음과 같이 쿼리해보세요 ㅋㅋ 잘되는 것 같긴한데.. 확실치는 않네요^^;
좀 빡세네요 이거 ㅋㅋ

그런데 g4_auth 테이블에는 어떻게 해야 값이 들어가는 건가요??ㅋㅋ
제가 그누보드를 잘 몰라서 ㅎㅎ g4_auth 테이블에 값이 없을때 테스트 한거라..
cnt 값이 0으로 잘 나오기는 하는데 있을때는 또 모르겠군요 ㅎㅎ;
어차피 튜닝이라는 것이 최적화 하는 것이고 보면
복잡해지기 마련입니다.

g4_auth는 관리지 페이지로 들어 갈 때 필요한 것입니다.

그래서 get_member에서 이 테이블을 조회하는 것은 역행하는 것이라고 봅니다.

대신 g4_group_member 쪽에 걸 가져 오는 것이 맞다고 봅니다.

관리자 페이지에서 쓸 get_member는 따로 만드시는 것이 좋을 듯합니다. 메뉴 번호랑 같이 sql 돌리면
group by 안 해도 되니까요.
get_member 함수는 상당히 많은 곳에서 불러옵니다.

그 함수에서 별도의 쿼리를 넣는 것은 상당히 비효율적입니다.

common.php 를 비롯해서 쪽지. 게시판 등 모든 곳에서 불러옵니다요.
© SIRSOFT
현재 페이지 제일 처음으로