2011-02-16 172 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}