0

我有一张包含用户付款详细信息的表格,还有一张包含用户列表的表格。我想从付款详细信息中获取所有用户的余额,但仅限于未被禁止的用户(这是 users 表中的一列)。

我对嵌套查询有些陌生,所以我不知道该怎么做?

这是我到目前为止所尝试的......

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

注意:用户名是两个表中的一列。

上面的查询不起作用。

回顾一下:有两个表:payment_details 和 users。我想将所有未被禁止的用户的余额列加在一起。

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 回答