1

次のクエリを使用して、MySQL データベースから結果を取得しています。

$query =  $this->db->query("
    SELECT * FROM results r 
    INNER JOIN categories c on r.id = c.result_id 
    INNER JOIN tags t on r.id = t.result_id 
    WHERE c.name in ('$purpose', '$prop_type', '$loan_type')
    $tag_string
    AND ( r.scope = 'all' OR r.scope = '$subdomain' )
    GROUP BY r.id
    HAVING COUNT(c.c_id) = 3
    ORDER BY r.usefulness DESC
    LIMIT 10 OFFSET $offset
");

返される結果は 500 以上になる可能性があります

ユーザーに表示できるように、制限がない場合にこのクエリが返す行の合計数をカウントするにはどうすればよいですか?

4

2 に答える 2

4

SQL_CALC_FOUND_ROWS と "SELECT FOUND_ROWS()" が必要です:

http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_found-rows

于 2012-05-09T23:28:06.670 に答える
4

シンプルです。select count(*) from ...代わりに使用するだけですselect * from ...

同じクエリ内ですべてを実行したい場合は、ここで答えを得ます。

MYSQLで単一のクエリでレコードをカウントおよび制限する方法は?

追加SELECT FOUND_ROWS();が答えになります。

于 2012-05-09T23:23:06.030 に答える