2011-08-24 46 views
0

下面的查詢會從一個叫視頻在維護查詢的同時可以使用count來獲取總行數嗎?

SELECT video.* from video 
LEFT JOIN conv_progress on video.vid_id=conv_progress.vid_id 
LEFT JOIN upload_progress on video.vid_id=upload_progress.vid_id 
where conv_progress.vid_id is null 
AND upload_progress.vid_id is null 
ORDER BY video.timestamp DESC LIMIT ?, ? 

我只想計數分頁使用的總成績表中的所有結果。如果使用rowCount(),當前的limit ?,?會減少我的計數。

SELECT video.*, COUNT(vid_id) as count from video 
LEFT JOIN conv_progress on video.vid_id=conv_progress.vid_id 
LEFT JOIN upload_progress on video.vid_id=upload_progress.vid_id 
where conv_progress.vid_id is null 
AND upload_progress.vid_id is null 
ORDER BY video.timestamp DESC LIMIT ?, ?',$variables 

此查詢只返回一個結果,但只返回一個合適的計數值。任何人都知道我可以解決這個問題?

回答

7

MySQL有一個sql_calc_found_rows擴展,迫使DB引擎來計算有多少行會被檢索,如果它是不限制發言。然後,您可以在單獨的查詢中使用[SELECT found_rows()][1]]檢索此全行數。

父查詢基本語法爲:

SELECT sql_calc_found_rows video.* FROM video 
... 
LIMIT ?,? 
1

我想簡單地計算總:

SELECT count(*) from video 
LEFT JOIN conv_progress on video.vid_id=conv_progress.vid_id 
LEFT JOIN upload_progress on video.vid_id=upload_progress.vid_id 
where conv_progress.vid_id is null 
AND upload_progress.vid_id is null 

然後,您使用的語言,確定最小的之間的返回的計數以及您的查詢在兩個行中的行數會受到限制嗎?參數。在PHP中:

min($query_count,$upper_bound-$lower_bound) 
+0

感謝您的輸入,但問題是我需要分頁的限制。在完整查詢中,您的解決方案不會返回任何內容。 – Scarface

+0

它總是會返回一個整數。你必須查詢數據庫兩次,一次從視頻中獲取列,另一個獲取數據。 – MPelletier

相關問題