2011-02-16 4 views
0

keyword_id, site_id, percentage가 포함 된 테이블이 있습니다.MySQL의 복잡한 쿼리

은 지금은 사용

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

지금라는 웹 사이트가 "example.com"가 나타납니다이 SQL에 따라 26 페이지 말할 수 있습니다.

이제 example.com에 키워드가있는 행 번호를 가져 오려면 어떻게해야합니까?

예를 들어 "example.com"키워드로 example.com의 6 번째 페이지가 5 위를 차지하는 경우 다른 페이지의 "example.com"웹 사이트와 "examples"웹 사이트가있는 경우 페이지 번호를 얻는 방법은 무엇입니까? .

limit_per_page로 키워드 (키워드 발생순으로 정렬)에 대한 웹 사이트 등급의 행 번호를 나눔으로써 웹 사이트가 표시되어야하는 페이지 번호를 찾으려고합니다. 주어진 내가 생각

+0

카운트 (*)는 일반적으로 도움이됩니다. 조건, 물론 –

+1

잘 고맙습니다 @ 콜. 유산탄. 카운트 (*)가 대개 도움이된다는 사실을 알게 될 때 저를 도울 수 있다면 감사하겠습니다. 그러나이 경우에는 약간 다릅니다. –

+0

죄송합니다. 그럴 가치가 의심됩니다. –

답변

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

참고 : {$page}*{$limitperpage}

편집이 페이지에 관심이 있다면

의 값으로 :=0 할당을 변경, 다음을 시도하십시오

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} 
+0

내가 이것을 시도하고 내가 잠시 후에 당신에게 돌아갈 것입니다 –

+0

안녕하세요, 나는 limit_per_page에 의해 키워드에 대한 웹 사이트의 순위의 행 번호를 나눔으로써 페이지 번호를 찾으려고 노력하고 있습니다. 위 쿼리는 작동하지 않습니다. –

+0

@ user381595 : 원한다면'FLOOR ((@ 행 : = @ 행 +1) -1)/5) +1 AS PAGE'를 쿼리에 사용할 수 있지만, 또는을 사용해야합니다. –