2017-11-13 5 views
0

のMySQLテーブルに参加しました。フォーラムを検索してフォームのいくつかの結果を試しましたが、私はまだ次のように苦労しています。 は、君たちは上の私にアドバイスをお願いします次Innerテーブルの合計が

結果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 

は、私が参加する必要があり2つの結果を持っています

私がしようとしているのは、user_idを使用して表2のwallet_idをリンクし、それをリンクすることです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 JOINをウォレットから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

コードが失敗した理由について説明した場合は、修正する方が簡単です。少なくとも1つのエラーは、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を囲まないでください。

代替、あなたは列名を修飾することで、クエリを書くことができます - あなたはそれらのすべてを修飾する必要があります。

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; 

あなたにもwallet_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が