我将如何嵌套此MySQL选择查询?

时间:2012-12-05 21:45:32

标签: php mysql sql

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

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

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

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

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

以上查询不起作用。

回顾:有两个表:payment_details和users。我想为所有未被禁止的用户添加余额列。

3 个答案:

答案 0 :(得分:3)

请勿在此处使用子查询。相反,请使用JOIN

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

答案 1 :(得分:1)

同意,加入可能是你想要的。

但是要回答具体问题,您可以尝试查询:

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

请注意,从问题中不清楚您是想要每个用户的总和,还是所有用户的总和。上述查询提供后者 - 不按用户分组。

答案 2 :(得分: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会比使用用户名

好得多