2011-02-16 170 views
0

我有一個包含keyword_id,site_id,百分比的表。MySQL複雜查詢

現在我用:

SELECT * 
FROM  keyword_relations 
WHERE keyword_id = "game" 
ORDER BY percentage DESC, 
LIMIT {$page}, {$limitperpage} 

現在,讓我們根據這個SQL 「example.com」 出現在一個網站名爲第26頁說。

現在讓我們說我想獲取example.com上關鍵字的行號,我該怎麼做。

例如,如果exam​​ple.com在關鍵詞「examples」中排名第5,那麼當我從另一個頁面獲得網站「example.com」和關鍵字「examples」時,如何獲取頁碼。

我試圖通過用limit_per_page除以關鍵字的網站排名的行號(按關鍵字出現的次數)來找到網站應該出現的頁碼。

+0

count(*)通常有幫助。當然條件,當然 – 2011-02-16 21:04:03

+1

非常感謝@Col。彈片。如果你能進一步幫助我,我會很感激,因爲我知道伯爵(*)通常會有所幫助。但在這種情況下,它有點不同。 – 2011-02-16 21:05:15

回答

1
$per_page_limit = 20; 
$sql = "SELECT count(k_id) as k_id FROM keywords_relations WHERE k_id = '{$row['k_id']}' AND percent >= '{$row['percent']}'"; 
$data = mysql_fetch_array(mysql_query($sql)); 
$k_ids = $data['k_id'] + 1; 
//is_int($k_page) ? floor($k_page) : floor($k_page) + 1; 
if($k_ids % $per_page_limit){ 
    $k_page = floor($k_ids/$per_page_limit) + 1;   
} else { 
    $k_page = $k_ids/$per_page_limit; 
3
SELECT *, @row:[email protected]+1 AS Row_Number 
FROM  keyword_relations, (SELECT @row:=0) r 
WHERE keyword_id = "game" 
ORDER BY percentage DESC, 
LIMIT {$page}, {$limitperpage} 

我認爲,鑑於what I could find

注::=0分配更改爲{$page}*{$limitperpage}

編輯

如果你有興趣在頁面的價值,請嘗試以下操作:

SELECT *, FLOOR((@row/5)+1) AS Page_Number, @row:[email protected]+1 AS Row_Number 
FROM  keyword_relations, 
      (SELECT @row:={$page}*{$limitperpage}) r 
WHERE  keyword_id = "game" 
ORDER BY percentage DESC 
LIMIT  {$page},{$limitperpage}