2013-07-04 2 views
0

나는 karma mod에서 phpbb의 데이터를 smf의 karma로 전송해야한다.SQL 카운트 변수와 다른 테이블에 쓰기

Phpbb에는 기본적으로 카르마 로그 인 phpbb_karma 테이블이 있습니다. 우리가 집중해야 할 중요한 분야는 user_id (카르마를 소유 한 사용자) 및 karma_action (긍정적이거나 부정적인 업보, + 또는 -로 표시됨)입니다.

나는 (모든 장단점을 계산 한 후 id_member 적절한 (user_id SMF 필드)와 karma_good (모든 흑자)과 karma_bad에서 smf_members 테이블에 각각의 고유 user_id에 주어진 결과를 복사 질의를 필요로하는 모든 마이너스).

나는 그것이 할 수 있다고 생각하지만 나는 SQL 전문가가 아니다.

답변

1
update smf_members a, 
    (select user_id, 
    sum(if(karma_action='+',1,0)) karma_good, 
    sum(if(karma_action='-',1,0)) karma_bad 
    from phpbb_karma 
    group by user_id) b 
set a.karma_good=b.karma_good, a.karma_bad = b.karma_bad 
where a.id_member = b.user_id; 
+0

# 1054 - 'where 절'의 알 수없는 열 'a.user_id' – WebDeveloper

+0

user_id의 대상 테이블이 id_member 인 경우 – WebDeveloper

+0

으로 변경했습니다. 이제는 – chetan

0
How about something like this: 

    SELECT DISTINCT user_id, (SELECT COUNT(1) as points 
    FROM phpbb_karma 
    WHERE action = '+' and k.user_id = user_id), 
    (SELECT COUNT(1) as points 
    FROM phpbb_karma 
    WHERE action = '-' and k.user_id = user_id) 
FROM 
    phpbb_karma k 

가장 최적화 된 것은 아니지만 일회용으로 지정하면 큰 문제가되지 않습니다.

+0

# 1054 - '필드 목록'(이 확실히 phpbb_karma에) – WebDeveloper

+0

위의 테스트가 나의 SQL Server 데이터베이스에 로컬로 잘 작동 알 수없는 열 'user_id를'. Unfortunatelly 나는 mysql을 가지고 있지 않다. – Yannis