Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.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
mysql中的子查询计数_Mysql_Count_Subquery - Fatal编程技术网

mysql中的子查询计数

mysql中的子查询计数,mysql,count,subquery,Mysql,Count,Subquery,我有下面的查询,它成功地获取了我要查找的数据 $query = @"SELECT table1.user_id, table1.col8, table2.col5, user_tokens.expiry FROM table1 INNER JOIN table2 ON table1.user_id=table2.user_id INNER JOIN user_tokens ON user_tokens.user_id=table1.user_id WHERE table1.col2 = '

我有下面的查询,它成功地获取了我要查找的数据

$query  = @"SELECT table1.user_id, table1.col8, table2.col5, user_tokens.expiry
FROM table1 
INNER JOIN table2
ON table1.user_id=table2.user_id
INNER JOIN user_tokens
ON user_tokens.user_id=table1.user_id 
WHERE table1.col2 = '{$userName}'";
我一直在玩弄它,以便在不进行第二次查询的情况下为我提供一些额外的数据。我想要的数据是另一个表(table10)中的行计数,该表的user_id列与user_id列匹配

所以有点像

,

它当前为我提供了整个表的行数,而不仅仅是与表1具有相同用户id的行

我认为我所做的内部联接只会计算用户id列与查询其余部分匹配的table10行,以及我尝试的联接table10的不同方式,或者使用额外的where来表示table10.user\u id=table1.user\u id失败的位置


有没有一种简单的方法可以做到这一点,或者我需要两个单独的查询?

关于这一点,有很多可能的解决方案,其中一个是通过一个子查询进行连接,该子查询分别获取每个组的总计数

SELECT  table1.user_id, 
        table1.col8, 
        table2.col5, 
        user_tokens.expiry,
        COALESCE(b.totalDataCount, 0) userDataCount
FROM    table1 
        INNER JOIN table2
            ON table1.user_id=table2.user_id
        INNER JOIN user_tokens
            ON user_tokens.user_id=table1.user_id 
        INNER JOIN
        (
            SELECT  user_ID, COUNT(*) totalDataCount
            FROM    table10
            GROUP   BY user_ID
        ) b ON  b.user_id = table1.user_id
WHERE   table1.col2 = '{$userName}

在这方面有很多可能的解决方案,我举例说明的一个是通过一个子查询进行连接,该子查询分别获取每个组的总计数

SELECT  table1.user_id, 
        table1.col8, 
        table2.col5, 
        user_tokens.expiry,
        COALESCE(b.totalDataCount, 0) userDataCount
FROM    table1 
        INNER JOIN table2
            ON table1.user_id=table2.user_id
        INNER JOIN user_tokens
            ON user_tokens.user_id=table1.user_id 
        INNER JOIN
        (
            SELECT  user_ID, COUNT(*) totalDataCount
            FROM    table10
            GROUP   BY user_ID
        ) b ON  b.user_id = table1.user_id
WHERE   table1.col2 = '{$userName}

谢谢大家!!从table.user\u id=table1.user\u id的表中选择COUNT*!!吉迪·埃文。我正在寻找一个按钮,但看不到一个。我该怎么做标记?谢谢大家!!从table.user\u id=table1.user\u id的表中选择COUNT*!!吉迪·埃文。我正在寻找一个按钮,但看不到一个。我如何标记它?
SELECT 
table1.user_id, 
table1.col8, 
table2.col5, 
user_tokens.expiry, 
(SELECT COUNT(*) 
    FROM table
        WHERE table.user_id=table1.user_id) as uCount 
    FROM table1 
    INNER JOIN table2
    ON table1.user_id=table2.user_id
    INNER JOIN user_tokens
    ON user_tokens.user_id=table1.user_id 
    WHERE table1.col2 = '{$userName}'";