2017-01-04 1 views
-4

내가 가진 3 개 테이블 :복잡한 MySQL의 쿼리 코드

표 1 : 배지
열 : badgeid (기본 키) 값

표 2 : 사용자
열 : 사용자 ID (기본 키), 이름

표 3 : Badge_User
열 : 사용자 ID (외래 키), badgeid (외래 키)
(한 사용자가 두 번 같은 배지를하지 않습니다)

각 사용자에 대해 모든 배지 값을 요약하여 표시 할 수 있도록 표가 필요합니다. 예를 들어

:
사용자 ID, 이름
ROW1 sum_of_badge_value : 2, 마이크, 30

Table 1: Badge 
    | badgeid value | 
    | 1  5  | 
    | 2  10  | 
    | 3  15  | 



    Table 2: User 
    | userid name | 
    | 1  Bob | 
    | 2  Mike | 
    | 3  Duke | 
    | 4  Craig | 



    Table 3: User_Badge 
    | userid badgeid | 
    | 1  1  | 
    | 1  2  | 
    | 2  3  | 
    | 2  2  | 
    | 2  1  | 
    | 3  3  | 
    | 1  1  | 

나는 쿼리 결과는 다음과 같이하고 가장 높은 sum_of_badge_value
쿼리으로 분류합니다 ROW2 : 1, 밥 15
row3 3 듀크 15 row4 4 크레이그 0

이 쿼리를 작성하는 방법에 대한 도움을 주시면 감사하겠습니다!

+5

** 내가 원하는 **는 SO입니다 **하지 무료 코딩 또는 코드 변환 또는 디버깅 또는 자습서 또는 도서관 찾기 서비스 ** SO에서 ___Here 우리가 당신의 시도를 해결, 우리는 you___ – RiggsFolly

+1

아니 코드 일을 다른 사람들이 여기서 어떻게 질문을했는지 살펴보십시오. http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql- 쿼리 – Strawberry

+1

@ Marcipanas 당신이 시도한 것은 무엇입니까? – denny

답변

2

전혀 복잡하지 않으므로 몇 가지 기본적인 SQL 튜토리얼을 읽어 보면 실제로 이해해야합니다! 몇 가지 힌트를 드리겠습니다.

SELECT ______, 
     sum(_____) 
FROM _____ ba_us 
JOIN _____ ba USING(____id) 
JOIN _____ us USING(____id) 
GROUP BY _____ 
+0

이것은 작동하지만 배지가 전혀없는 사용자도 표시해야합니다. 배지가있는 모든 사용자에게만 표시됩니다. 배지와 일치하지 않는 사용자를 포함시킬 수있는 방법이 있습니까? – Marcipanas

+0

배지에 'Join'을 'left join'으로 바꾸고 이것을 읽으십시오 : https://www.sitepoint.com/understanding-sql-joins-mysql-database/ –

+0

감사합니다 !! – Marcipanas