고수님들 도와주십시오. 쿼리문제입니다. ㅠ > 그누4 질문답변

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!

그누4 질문답변

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

고수님들 도와주십시오. 쿼리문제입니다. ㅠ 정보

고수님들 도와주십시오. 쿼리문제입니다. ㅠ

본문

안녕하세요. 고수님들.

다른게 아니라..

기능하나를 넣으려하는데

게시물 쓰면 포인트 쌓이잖아ㅣ요

포인트중에서 순수하게 게시판에 쓴것만 회원별로 합산하고 싶어서요
게시물 포인트만 추가하되, 회원 레벨이 8 이상인 회원은 제거한다. 이거죠.

만들어놓은게 잇는데. 이게 미완성이라. ㅠ

좀 봐주시면 감사하겠습니다.

=======================

 SELECT
 mb_id, SUM(po_point) as cnt
 from $g4[point_table]
 where po_rel_table<>'@member' and po_rel_table<>'@passive'

 and mb_id<>'admin'
 and mb_id<>'Xplant'
 and mb_id<>'pegasus'
 and mb_id<>'00floret'
 and mb_id<>'kim0421'
 and mb_id<>'lilywhite77'
 and mb_id<>'boxxod'
 and mb_id<>'bb212'
 and mb_id<>'seokjung87'
 and mb_id<>'purifarm'

 group by mb_id
 order by cnt desc
 limit 0,8 ";

======================

이건데요

여기 뒤에 and mb_id<> 이거.. 를 매번 추가해야해서

mb_level>8 이상은 제외 이렇게 핧수 업나요?

제가 해놓은건. 회원가입포인트, 관리자부여포인트 를 제외한 나머지 포인트를 합산하는건데
<> 이 많다보니. 조건이 안맞는지. 뒤에 <> 를 매번 추가해야하더라구요 ㅠ

도와주십시오. 고수님들.. ㅠ

댓글 전체

서브 쿼리가 되신다면 (mysql 4.1부턴가 가능하다고 들었습니다 )

and mb_id not in (select mb_id from $g4[member_table] where mb_level > 8)

이렇게 해보세요
위 쿼리가 에러가 나서. join 을 이용했거든요
위 쿼리를 쓰니깐..

1064 : You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'select mb_id, mb_level from g4_member where mb_level > '8') g

error file : /index.php

이 에러가 나구요.  서브쿼리가 안먹는건지는 모르겠습니다. ㅠ

그래서.. 다른 분이 알려주신 join 으로 하려 햇더니. 다른 에러가 나네요.

select mb_id, sum(po_point) cnt from $g4[point_table] a,
$g4[member_table] b
where a.mb_id = b.mb_id
and a.po_rel_table<>'@member' and a.po_rel_table<>'@passive'
and b.mb_level < '8 '
group by a.mb_id
limit 0,8

이리 하니..

1052 : Column: 'mb_id' in field list is ambiguous 에러가 나네요..

이리 하면 안되나요?
'select mb_id, mb_level from g4_member where mb_level > '8') g
select mb_id from g4_member where mb_level > '8'

이렇게 수정하고 해보세요

select 절에 필드 2개 쓰시면 안됩니다.
작성자에 의해 채택됐습니다.
select a.mb_id, sum(a.po_point) cnt from $g4[point_table] a
left join $g4[member_table] b on a.mb_id = b.mb_id
and a.po_rel_table<>'@member' and a.po_rel_table<>'@passive'
and b.mb_level < '8 '
group by a.mb_id
order by cnt desc /* 포인트합 높은순서. 반디는 뒤에 desc 생략 */
limit 0,8
자체해결햇는데, sisin 님이 동일한 답을 달아주셧군요!!. 감사합니다. ㅠ

제가 용쓰면서 찾은걸 이리 쉽게 풀어주시다니..

역시 sql 은 몇년을 해도 어렵네요. 휴..

답변 주신 여러분들 감사합니다.
전체 66,558 |RSS
그누4 질문답변 내용 검색

회원로그인

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