Paginate问题与group by的查询中的count

时间:2013-05-13 05:51:00

标签: php dql

好的,我通常使用分页代码来计算总页数,比如

$query = "SELECT COUNT(*) as num FROM $tableName WHERE `ganador2` = '1'";
    $total_pages = mysql_fetch_array(mysql_query($query));
    $total_pages = $total_pages[num];

然后我使用此查询调用回显页面内容的数据。

// Get page data
    $query1 = "SELECT id,name,lastname,email,codigo, media, phone, Pcode, birth FROM $tableName  WHERE `ganador2` = '1' LIMIT $start, $limit ";

最后一部分是工作代码,好的,

知道我试图将它用于此查询,这会计算用户输入电子邮件的次数。

$query = "SELECT COUNT(*) AS num,id,name,lastname,email,codigo, media, phone, Pcode, birth FROM usuarios GROUP BY email";
    $total_pages = mysql_fetch_array(mysql_query($query));
    $total_pages = $total_pages[num];

// Get page data
    $query1 = "SELECT COUNT(*) AS top,id,name,lastname,email,codigo, media, phone, Pcode, birth FROM usuarios GROUP BY email ORDER BY top DESC LIMIT $start, $limit";

问题在于分页,它告诉我刚刚找到的查询(2个用户),但那不是真的,所以我的查询错了..我如何计算第一个查询中的总页数,因为第二个查询正在工作很好。

感谢

5 个答案:

答案 0 :(得分:1)

与您的小组一起收到每封电子邮件的计数。你得到的第一封电子邮件的记录数量......我认为这就是你想要的。

SELECT COUNT(DISTINCT email) AS num FROM usuarios;

答案 1 :(得分:0)

您要按email进行分组,因此第二个COUNT(*) as num不会为您提供总条目数,而是每行的num字段包含具有相应内容的用户总数email

答案 2 :(得分:0)

SELECT count(*) AS total
FROM
    (SELECT COUNT(DISTINCT wp_users.ID)
    FROM wp_vgr_order
    INNER JOIN wp_users ON wp_vgr_order.author_id = wp_users.ID
    GROUP BY wp_users.ID) AS ROW_COUNT.

您可以在开始(和结束)

中更改查询

答案 3 :(得分:0)

只需使用1个查询即可获取有限的分页数据和无限制的记录总数:https://dev.mysql.com/doc/refman/5.7/en/information-functions.html#function_found-rows

第一个查询将提供当前页面的数据。

然后第二个查询将只是:SELECT FOUND_ROWS();,它会给出第一个查询找到的无限总数。

答案 4 :(得分:0)

//注意:用于解决总计数问题

Step1:- 转到下面给出的路径
文件路径 => node_modules/@adonisjs/lucid/src/Database/MonkeyPatch.js => 行:153 替换这一行

const counts = await countByQuery.count('* as total')

使用下面给出的代码:

const counts = await this.client
        .queryBuilder().count('* as total').from({ main:countByQuery.count('*') })