Php 如何嵌套此MySQL Select查询?

Php 如何嵌套此MySQL Select查询?,php,mysql,sql,Php,Mysql,Sql,我有一个包含用户付款详细信息的表,还有一个包含用户列表的表。我想从支付详细信息中获得所有用户的余额,但只针对未被禁止的用户,这是用户表中的一列 我对嵌套查询有点陌生,所以我不知道该怎么做 这是我到目前为止尝试过的 mysql_query(" SELECT SUM(balance) FROM payment_details WHERE (SELECT ban FROM users WHERE username=userna

我有一个包含用户付款详细信息的表,还有一个包含用户列表的表。我想从支付详细信息中获得所有用户的余额,但只针对未被禁止的用户,这是用户表中的一列

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

这是我到目前为止尝试过的

mysql_query("
    SELECT SUM(balance) 
    FROM payment_details 
    WHERE (SELECT ban 
           FROM users 
           WHERE username=username
          ) != '1'
")
注意:用户名是两个表中的一列

上述查询不起作用


总而言之:有两个表:付款详情和用户。我想为所有未被禁止的用户添加余额列。

不要在此处使用子查询。相反,使用联接


不要在这里使用子查询。相反,使用联接

查询是:

SELECT SUM(balance) FROM payment_details JOIN users ON payment_details.username=users.username WHERE users.ban !='1' group by payment_details.username
顺便说一句,处理用户ID比处理用户名要好得多。查询是:

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

顺便说一句,使用用户ID比使用用户名要好得多。同意,加入可能是您想要的

但是,要回答特定问题,您可以尝试以下查询:

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

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

同意,加入可能是您想要的

但是,要回答特定问题,您可以尝试以下查询:

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

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

这似乎应该可以,但它给我的是旧的mysql_fetch_数组,它希望参数1是resource,布尔给定错误。有什么想法吗?很快切换到PDO,因为我有错误处理设置。它在…@user1019588:将其更改为payment_details.balance中显示,未捕获的异常“PDOException”,消息为“SQLSTATE[23000]:完整性约束冲突:字段列表中的1052列“balance”不明确。为什么您的users表有一个balance字段?问题…通过使用该联接,我能够访问users行中的所有列吗?看起来这应该可以工作,但它给我旧的mysql\u fetch\u数组期望参数1是resource,布尔给定错误。有什么想法吗?很快切换到PDO,因为我有错误处理设置。它在…@user1019588:将其更改为payment_details.balance中显示,未捕获的异常“PDOException”,消息为“SQLSTATE[23000]:完整性约束冲突:字段列表中的1052列“balance”不明确。为什么您的users表有一个balance字段?问题…通过使用该联接,我可以访问users行中的所有列吗?是所有用户的总数,还是您希望每个用户的总数?未被禁止的所有用户的总数:是所有用户的总数,或者您想要每个用户的总数?所有未被禁止的用户的总数:这在添加禁令后确实有效!='1'. 为什么联接比这更好?有什么原因吗?@user1019588:联接比子查询更有效。在添加了禁令之后,这确实有效!='1'. 为什么联接比这更好?有什么原因吗?@user1019588:联接比子查询更有效。