2010-07-04 5 views
0

다른 테이블의 값을 기반으로 한 테이블에 저장된 합계를 얻을 수있는 쿼리를 만들려고합니다.다른 테이블에 대한 Group By 문을 기반으로 한 SUM 데이터

특히, 'winning_bids'라는 테이블 하나가 있는데, 'objects'라는 다른 테이블에 가입하고 싶습니다. 'winning_bids'는 사용자 ID와 객체 ID ('객체'테이블의 기본 키)를 포함합니다. 'objects'테이블은 객체 ID와 객체의 값을 포함합니다. 나는 'winning_bids'테이블의 User ID별로 그룹화 된 각 사용자의 'objects'테이블에서 값을 합산하려고합니다.

나는 이런 식으로 뭔가를 시도했지만 작동하지 않습니다 :

SELECT SUM(o.value) AS total, w.uid 
    FROM winning_bids w 
    LEFT JOIN objects o ON (o.id = w.oid) 
GROUP BY w.uid 

이 문은 단순히 사용자 ID 모두를 반환하지만 각 행의 첫 번째 사용자 ID에 대한 총.

감사합니다. 감사드립니다.

+0

제대로 작동합니다. "내부 조인"대신 "왼쪽 ​​조인"을 사용하는 이유가 있습니까? 샘플 데이터를 게시 할 수 있습니까? –

답변

0

나를 위해 잘 작동합니다. 여기

내가 당신의 쿼리를 테스트 한 것입니다 :

CREATE TABLE winning_bids (uid INT NOT NULL, oid INT NOT NULL); 
INSERT INTO winning_bids (uid, oid) VALUES 
(1, 1), 
(1, 2), 
(2, 3); 

CREATE TABLE objects (id INT NOT NULL, value INT NOT NULL); 
INSERT INTO objects (id, value) VALUES 
(1, 1), 
(2, 20), 
(3, 300); 

SELECT SUM(o.value) AS total, w.uid 
FROM winning_bids w 
LEFT JOIN objects o ON (o.id = w.oid) 
GROUP BY w.uid; 

결과 : 당신은 아직도 당신이 잘못을 준다 예를 들어, 입력 데이터를 게시하시기 바랍니다 수 있습니다 작동하지 않는 생각한다면

 
total uid 
21  1 
300 2 

결과를 조회 할 때 결과를 표시하고 올 Y 른 결과가 있어야한다고 생각하는 내용을 지정하십시오.

+0

아아, 작동하지 않습니다 ... 내가 데이터를 엉망으로 만든 것처럼 보입니다. 그래서 그게 잘못되었습니다. 나는 지금 어리 석다. 도와 주셔서 감사합니다! –

+0

@Dan D .: 문제 없습니다. 그것에 대해 걱정하지 마십시오. :) –