홈피공장장

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

· 2010-08-23 (월) 17:40:24 · 3152 · 10
안녕하세요. 고수님들.

다른게 아니라..

기능하나를 넣으려하는데

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

포인트중에서 순수하게 게시판에 쓴것만 회원별로 합산하고 싶어서요
게시물 포인트만 추가하되, 회원 레벨이 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 이상은 제외 이렇게 핧수 업나요?

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

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

댓글 10개

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

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

이렇게 해보세요
2010-08-23 (월) 18:13:34
음.. 서브쿼리는 되는거 같은데, 에러가 나네요. ㅠ

문법은 맞는거 같은데..

그래도 답변주셔서 감사합니다.
어떤에러가 나는지 올려주시면 자세한 답변이 가능합니다
2010-08-23 (월) 18:30:17
위 쿼리가 에러가 나서. 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 에러가 나네요..

이리 하면 안되나요?
'mb_id' in field list is ambiguous :mb_id가 모호하다는 말이잖아요
select b.mb_id.............
2010-08-23 (월) 18:45:41
위 sql 중에 어디에 끼워야하나요? ... 쿼리에 넘 약해서리. ㅠ
'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개 쓰시면 안됩니다.
2010-08-23 (월) 18:51:59
쿼리는 맞는데.. mysql 이 4.0 이네요. ㅠ. 서브쿼리를 못쓴다는..

휴.. 위에 join 문을 수정해서 해야하나요?

방법이 없을까요?
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
2010-08-23 (월) 19:17:43
자체해결햇는데, sisin 님이 동일한 답을 달아주셧군요!!. 감사합니다. ㅠ

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

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

답변 주신 여러분들 감사합니다.
댓글을 작성하시려면 로그인이 필요합니다.

그누4 질문답변

66,531건

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

+
제목 글쓴이 날짜 조회
10-08-24 조회 1,661
10-08-24 조회 2,345
10-08-24 조회 1,839
10-08-24 조회 1,603
10-08-24 조회 1,081
10-08-24 조회 2,626
10-08-24 조회 1,634
10-08-23 조회 1,630
10-08-23 조회 1,602
10-08-23 조회 1,689
10-08-23 조회 1,549
10-08-23 조회 1,612
10-08-23 조회 2,241
10-08-23 조회 3,153
10-08-23 조회 1,611
10-08-23 조회 1,666
10-08-23 조회 2,334
10-08-23 조회 1,876
10-08-23 조회 1,619
10-08-23 조회 2,134