嵌套查询语法改进

时间:2012-02-03 09:50:43

标签: php mysql sql

使用1个查询而不是2个

来实现此目的的正确语法是什么?
$result = mysql_query(SELECT * FROM users);

while($row = mysql_fetch_array($result)){
    $result = mysql_query(SELECT SUM(balance) FROM users_account WHERE uid=$row[id]);
}

3 个答案:

答案 0 :(得分:1)

您应该内联接表和按用户表分组。 您可以在SELECT子句中添加更多列,记得在GROUP BY子句中添加相同的列以获取标准SQL语句。

$query = " SELECT u.uid, SUM(a.balance) 
           FROM users_account a
           INNER JOIN users  u
           ON u.uid = a.uid
           GROUP BY u.uid";
$result = mysql_query($query);
while($row = mysql_fetch_array($result)){
     ...

如果需要,安排$ query连接字符串。

答案 1 :(得分:0)

$result = mysql_query(SELECT a.*, b.SUM(balance) AS user_balance FROM users a, users_account b WHERE uid=$row[id]);

答案 2 :(得分:0)

这将返回user_account表中包含用户信息的所有记录: -

    SELECT SUM(ua.balance),u.*,ua.* FROM users_account ua
    left join users u on ua.users_account=u.id
    GROUP BY u.id