0

ユーザーの支払いの詳細を含むテーブルと、ユーザーのリストを含む別のテーブルがあります。支払いの詳細からすべてのユーザーの残高を取得したいのですが、禁止されていないユーザー (users テーブルの列) のみを対象としています。

ネストされたクエリに少し慣れていないので、これを行う方法がわかりませんか?

これが私がこれまでに試したことです...

mysql_query("
    SELECT SUM(balance) 
    FROM payment_details 
    WHERE (SELECT ban 
           FROM users 
           WHERE username=username
          ) != '1'
")

注: ユーザー名は両方のテーブルの列です。

上記のクエリは機能しません。

要約: payment_details と users の 2 つのテーブルがあります。禁止されていないすべてのユーザーの残高列を合計したいと思います。

4

3 に答える 3

3

ここではサブクエリを使用しないでください。代わりに、を使用してJOINください。

SELECT SUM(payment_details.balance) FROM payment_details
JOIN users ON payment_details.username = users.username
WHERE ban != '1' 
于 2012-12-05T21:47:40.437 に答える
1

同意すると、結合はおそらくあなたが望むものです。

ただし、特定の質問に答えるには、次のようなクエリを試すことができます。

SELECT SUM(payment_details.balance)
    FROM payment_details
    WHERE payment_details.username in (
        SELECT users.username
            FROM users WHERE ban != '1'
    );

質問からは、個々のユーザーごとの合計が必要なのか、それともすべてのユーザーの合計が必要なのかが明確ではなかったことに注意してください。上記のクエリは後者を提供します -- ユーザーごとにグループ化されていません。

于 2012-12-05T21:51:16.820 に答える
0

クエリは次のとおりです。

SELECT SUM(balance) FROM payment_details JOIN users ON payment_details.username=users.username WHERE users.ban !='1' group by payment_details.username

ところで、ユーザーIDで作業する方がユーザー名で作業するよりもはるかに優れています

于 2012-12-05T21:50:56.027 に答える