Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql语句中的组子查询计数?_Php_Mysql_Sql - Fatal编程技术网

Php mysql语句中的组子查询计数?

Php mysql语句中的组子查询计数?,php,mysql,sql,Php,Mysql,Sql,想知道这是否可能。在下面的声明中,我从不同的表中获取计数。这将打印每个用户id的总计数组 是否有任何方法可以合并这些总计,以便返回一个包含总计的数组?我使用子查询是因为联接在性能方面受到了影响,所以联接不是一个选项 $stmt = $db->prepare(" SELECT (SELECT COUNT(*) FROM log1 WHERE log1.user_id = users.user_id AS l1, (SELECT COUNT(*) FRO

想知道这是否可能。在下面的声明中,我从不同的表中获取计数。这将打印每个用户id的总计数组

是否有任何方法可以合并这些总计,以便返回一个包含总计的数组?我使用子查询是因为联接在性能方面受到了影响,所以联接不是一个选项

$stmt = $db->prepare("
    SELECT
        (SELECT COUNT(*) FROM log1 WHERE log1.user_id = users.user_id AS l1,
        (SELECT COUNT(*) FROM log2 WHERE log2.user_id = users.user_id AS l2,
        (SELECT COUNT(*) FROM log3 WHERE log3.user_id = users.user_id AS l3,
        (SELECT COUNT(*) FROM log4 WHERE log4.user_id = users.user_id  AS l4
    FROM computers
    INNER JOIN users
        ON users.computer_id = computers.computer_id    
    WHERE computers.account_id = :cw_account_id AND computers.status = :cw_status
");

$binding = array(
    'cw_account_id' => $_SESSION['user']['account_id'],
    'cw_status' => 1
);

$stmt->execute($binding);

$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
目前,我正在做类似的事情,以获得我想要的结果:

foreach($result as $key)
{
    $new['l1'] = $new['l1'] + $key['l1'];
    $new['l2'] = $new['l2'] + $key['l2'];
    $new['l3'] = $new['l3'] + $key['l3'];
    $new['l4'] = $new['l4'] + $key['l4'];
}

return $new;
使用:

此查询返回一行总计数和所需结果:

$new = $result[0];

SUM()如何在这里添加任何值?这是完全相同的结果。@Used\u By\u原始查询为每个用户返回许多行。使用
SUM
的查询返回一行,因此结果不同。如果使用此查询,则不需要循环
foreach($result as$key).
。然后完全删除计算机和用户表?也许我不明白;如果是这样的话,对不起-谢谢你。。。我甚至都没想过要总结一下@已被使用-计算机和用户表用于获取正确“帐户”的计数。。。每个人都有一个帐户id。。。它链接到任何数量的计算机,而这些计算机链接到任何数量的用户。我只是想了解一下他们账户中的所有信息。
$new = $result[0];