mysql sorgusu sayma

2 Cevap php

Ben aşağıdaki kodu var


$result = $handle->select()->from('store_products_id', array('count'=>'COUNT(store_products_id.product_id)'))
                                       ->where('store_products_id.store_id=?', $this->store_id)
                                       ->columns($selectColumns)
                                       ->join('product_quickinfo', 'store_products_id.product_id = 
        									  product_quickinfo.product_id')

                                       ->join('image_paths', 'product_quickinfo.image_id = 
        									  image_paths.image_id')

    								   ->order('product_quickinfo.date_created DESC')
    								   ->limitPage($this->page_number, $this->sum_each_page)
                                       ->query(ZEND_DB::FETCH_OBJ);

Ancak, ben sadece geri bir sonuç almak .. burada print_r bir bakalım:


Array ( [0] => stdClass Object ( [count] => 14 [small_path] => 1 [product_name] => v evrecvrv [price] => 22 [product_id] => 1 [image_id] => 1 [date_created] => 0000-00-00 00:00:00 [large_path] => [description] => ) )

When I remove the COUNT controller, I get all the items back. How can I both count the entire query (beyond the LIMIT that I impose) and also get the entire query back?

Teşekkürler.

2 Cevap

En etkili yolu, bu durumda, iki sorguları çalıştırmak için basitçe.

MySQL 4.0.0 beri LIMIT ifadesini göz ardı toplam satır sayısını saymak için MySQL anlatacağım hangi sorguda SQL_CALC_FOUND_ROWS kullanabilirsiniz. Hala satır sayısını almak için ikinci bir sorgu çalıştırmak gerekir, ama sadece kayıtlı satır sayısını alır basit bir sorgu.

Kullanımı oldukça basittir. Eğer ana sorguda sadece SELECT, sonra SQL_CALC_FOUND_ROWS seçeneğini eklemeniz gerekiyor ve ikinci sorguda satır toplam sayısını almak için FOUND_ROWS () işlevini kullanmanız gerekir. Sorguları bu gibi görünecektir:

SELECT SQL_CALC_FOUND_ROWS name, email 
FROM users 
WHERE name LIKE 'a%' 
LIMIT 10;

SELECT FOUND_ROWS();

Tek sınırlama SQL_CALC_FOUND_ROWS yerde satır sayısını kurtarmak değil çünkü hemen ilki sonra ikinci sorgu çağırmak zorunda olmasıdır.

(Kopyalanan this post)