2017-11-13 11 views
0

포럼을 검색하여 양식에서 몇 가지 결과를 시도했지만 여전히 다음과 같이 고민 중입니다. 너희들은 날에게 조언을 주시겠습니까 다음Inner 테이블 합계가있는 MySQL 테이블에 가입하십시오.

결과 1 :

SELECT user_id, SUM(amount)FROM transactions WHERE received = '100' GROUP BY user_id 

결과 2 :

SELECT * FROM transactions INNER JOIN wallet ON transactions.user_id = wallet.user_id 

Table 1: transactions 
Rows: user_id, amount, received 

Table 2: wallet 
Rows: user_id, wallet_id 

는 내가 가입해야이 개 결과를

내가하려는 것은 user_id를 사용하여 표 2의 wallet_id를 링크하여 t o 테이블 1의 모든 트랜잭션에 대한 user_id = 100. 또한 금액 행에서 결과를 합산해야합니다. 그러면 각 user_id의 합계가 표시되고 지갑에 지갑이 연결됩니다.

SELECT user_id, SUM(amount)FROM transactions 
INNER JOIN wallet ON transactions.user_id = wallet.user_id 
WHERE received = '100' GROUP BY user_id 

을하지만 작동하지 :

나는 노력했다. 들 ;-)이

+1

샘플 데이터를 기입하십시오 wallet_id transaction.user_id = wallet.uid ON 거래 INNER 가입 지갑에서 SUM (양) :이 은 나를 위해 일한 것입니다 당신이 쿼리에서 기대하는 결과물과 함께. –

답변

0

그냥 USER_ID으로 그룹을 추가 도와주세요,이 도움이

SELECT user_id, wallet_id, SUM(amount)FROM transactions 
INNER JOIN wallet ON transactions.user_id = wallet.user_id 
WHERE received = '100' GROUP BY user_id, wallet_id 
2

희망을 wallet_id.

SELECT user_id, wallet_id, SUM(amount)FROM transactions t 
JOIN wallet w ON t.user_id = w.user_id 
WHERE received = '100' GROUP BY user_id, wallet_id; 
0

코드가 실패한 이유를 설명하면 쉽게 수정할 수 있습니다. 적어도 하나의 오류는 user_id이 정의되지 않았 음을 의미합니다.

간단한 해결책은 USING을 사용하는 것입니다

SELECT user_id, SUM(t.amount) 
FROM transactions t INNER JOIN 
    wallet w 
    USING (user_id) 
WHERE t.received = '100' 
GROUP BY user_id; 

참고 : received가 숫자 인 경우, 작은 따옴표에 100를 동봉하지 않습니다.

대체, 당신은 열 이름을 정규화하여 쿼리를 작성할 수 있습니다 - 당신은 그들 모두 자격을해야합니다 당신은뿐만 아니라 wallet_id를 원하는 경우

SELECT w.user_id, SUM(t.amount) 
FROM transactions t INNER JOIN 
    wallet w 
    ON w.user_id = t.user_id 
WHERE t.received = '100' 
GROUP BY w.user_id; 

을 다음 SELECTGROUP BY에 포함 :

SELECT w.user_id, w.wallet_id, SUM(t.amount) 
FROM transactions t INNER JOIN 
    wallet w 
    ON w.user_id = t.user_id 
WHERE t.received = '100' 
GROUP BY w.user_id, w.wallet_id; 
0

고마워. 너네들 락 !!!!! ,

SELECT wallet_id 접수, 접수 = '100'GROUP BY가