쿼리문 합치는거 질문입니다~

쿼리문 합치는거 질문입니다~

QA

쿼리문 합치는거 질문입니다~

본문


(SELECT mb_id, COUNT(*) FROM g5_write_advagency WHERE NOT mb_id="admin")
UNION
(SELECT mb_id, COUNT(*) FROM g5_write_advhelp WHERE NOT mb_id="admin")
UNION
(SELECT mb_id, COUNT(*) FROM g5_write_advsale WHERE NOT mb_id="admin")
UNION
(SELECT mb_id, COUNT(*) FROM g5_write_crimehelp WHERE NOT mb_id="admin")
UNION
(SELECT mb_id, COUNT(*) FROM g5_write_evalcompany WHERE NOT mb_id="admin")
UNION
(SELECT mb_id, COUNT(*) FROM g5_write_evalsugg WHERE NOT mb_id="admin")
UNION
(SELECT mb_id, COUNT(*) FROM g5_write_expertinfo WHERE NOT mb_id="admin")
UNION
(SELECT mb_id, COUNT(*) FROM g5_write_festivalinfo WHERE NOT mb_id="admin")
UNION
(SELECT mb_id, COUNT(*) FROM g5_write_foodmarket WHERE NOT mb_id="admin")
UNION
(SELECT mb_id, COUNT(*) FROM g5_write_freeboard WHERE NOT mb_id="admin")
UNION
(SELECT mb_id, COUNT(*) FROM g5_write_funboard WHERE NOT mb_id="admin")
UNION
(SELECT mb_id, COUNT(*) FROM g5_write_humanresource WHERE NOT mb_id ="admin")
UNION
(SELECT mb_id, COUNT(*) FROM g5_write_knowhow WHERE NOT mb_id="admin")
UNION
(SELECT mb_id, COUNT(*) FROM g5_write_NOTice WHERE NOT mb_id="admin")
UNION
(SELECT mb_id, COUNT(*) FROM g5_write_poormember WHERE NOT mb_id="admin")
UNION
(SELECT mb_id, COUNT(*) FROM g5_write_qa WHERE NOT mb_id="admin")
UNION
(SELECT mb_id, COUNT(*) FROM g5_write_returnfarming WHERE NOT mb_id="admin")
UNION
(SELECT mb_id, COUNT(*) FROM g5_write_subaskboard WHERE NOT mb_id="admin")
UNION
(SELECT mb_id, COUNT(*) FROM g5_write_selfintroduce WHERE NOT mb_id="admin")
UNION
(SELECT mb_id, COUNT(*) FROM g5_write_satisfyrank WHERE NOT mb_id="admin")
UNION
(SELECT mb_id, COUNT(*) FROM g5_write_usedmachine WHERE NOT mb_id="admin")
UNION
(SELECT mb_id, COUNT(*) FROM g5_write_weeklysatisfy WHERE NOT mb_id="admin")

 

 

 

이렇게 했을때(phpmyadmin에서) 결과가

mb_idCOUNT(*)
0
admin21

 

이렇게 나옵니다

 

지금 계정은2개 (admin, admin2) 입니다.

admin2로 쓴글은 1개 맞구요. 나머지 글들은 다 admin 으로 작성해서ㅎㅎ 

문제는 저 쿼리문이 너무 긴데 저걸 줄일 수 있는 방법이 없을까요!? 

 

궁극적으로 제가 하려는 것은 주간 베스트 회원(admin 제외 특정게시판 제외(공지,Q&A 등)) top 10 리스트를

만들려고 하고있습니다. 지금 php도 처음 db도 처음이라 여럿 삽질중이네요 ㅠ 많은 가르침 부탁드리겠습니다

 

 

제가 합치려는 이유는..혹시 더 짧게 위의 기능을 하는 쿼리문이 있을까 싶기도 하구요

php 라이브러리 파일에서 저걸 불러와야 할것 같은데 너무 길어서;; 그렇습니다 ㅠ

 

이 질문에 댓글 쓰기 :

답변 2

유니언을 너무 남발하는건 좋지 않아요...

new 테이블을 이용해서 하세요~ 


$tmp_write_table = $g5['write_prefix'] . $board['bo_table']; # write_ 가 붙어 있는 게시판 모든 table 

$tmp_write_id_table = "SELECT mb_id, COUNT(*) FROM". $g5['write_prefix'] . $board['bo_table'] . "WHERE NOT mb_id='admin'";



이렇게 하면 될까요!?
근데 써놓고 보니 똑같은거네요...-_-;;

저런 방식으로 하는 것은 억지로 작동만 한다는 것이지 프로그램으로서는 문제가 많습니다

나중에 게시물 수가 많아진 후를 생각해야합니다

방식을 바꾸세요

스킨 폴더에 write_update.skin.php를 만들어서 아래 코드를 넣어두면 게시물 등록시 마다

카운트를 기록하고 나중에는 회원 테이블에서 간단히 추출할 수 있습니다

-- 게시물 삭제시에는 카운트를 -1 하는 코드를 제작해야겟지만 초보라고 하니 삭제는 무시하고 하세요

<?

if(!$w && $member[mb_id])

 sql_query("update $g5[member_table] set mb_1=mb_1+1 where mb_id='$member[mb_id]'");

?>

   

 

 

 

답변을 작성하시기 전에 로그인 해주세요.
전체 240
QA 내용 검색

회원로그인

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