2013-05-05 4 views
0

나는 사용자가있는 테이블과 사용자 테이블의 ID와 관련된 이벤트가있는 테이블을 가지고 있습니다. 각 이벤트에서 포인트를 만들 수 있으며 특정 사용자로부터 총 포인트를 얻고 싶습니다.특정 사용자에 대한 두 테이블의 합계 계산

그것은 다음과 같습니다

Users 
+----+----------+ 
| id | username | 
+----+----------+ 

Events 

+----------+---------+--------+ 
| event_id | user_id | points | 
+----------+---------+--------+ 

// EVENT_ID는 이벤트에 대한 특정 데이터와 이벤트 표와 관련이 있습니다. 그러나 그것은 관련이 없다.

사용자가 얻은 데이터와 그가 한 번의 쿼리에서 얻은 총점을 얻는 것이 가장 좋습니다.

감사 인사, Mottenmann는

+0

어쩌면 "특정 사용자에 대해 두 테이블의 합계를 계산하십시오"또는 이와 비슷한 것으로 제목을 변경할 수 있습니다. (현재 제목 오해의 소지가있다) – bestprogrammerintheworld

답변

1

"사용자의 데이터와 그가 하나 개의 질의에 도착하는 총 포인트를 획득 ..to."

을 당신은 가입해야 두 테이블을 먼저 처리 할 수 ​​있으므로 데이터를 조작 할 수 있습니다. 아래의 쿼리는 INNER JOIN을 사용하며 Events에 일치하는 레코드가 적어도 하나있는 경우 결과 목록에 사용자 만 포함됩니다. 다른 표에서 일치하는 단일 레코드가없는 경우에도 모든 사용자를 얻으려면 대신 LEFT JOIN을 사용하십시오.

SELECT a.ID, a.username, SUM(b.points) totalPoints 
FROM Users a 
     INNER JOIN Events b 
      ON a.ID = b.user_ID 
GROUP BY a.ID, a.username 

조인에 대해 더 친절하게 아래 링크를 방문, 더 많은 지식을 얻을 수 :

+0

빠른 답변 주셔서 감사합니다, 다른 사용자가 각각의 totalPoints를 선택하고 그 값에 따라 주문한 다음 특정 사용자의 위치를 ​​얻을 수 있다면 다른 질문이 있습니까? – Mottenmann

+0

@downvoter 당신은 내 대답을 downvote 너무 많은 기회가 있습니다. 명확하게':)'행복 downvoting. –

1

"각 이벤트에서 당신이 포인트를 만들 수와 내가 얻을 싶어 총 사용자 수는 입니다. "

은 당신이 뭔가를 할 수 있습니다 : {$id} 사용자의 ID입니다

select sum(e.points) as points from users u 
left join events e ON (u.id = e.user_id) 
WHERE u.id = {$id} 

.

관련 문제