2011-03-11 5 views
0

다음 쿼리 (Wordpress DB)가 있습니다. 계산에 의해 응답 나는 또한 대부분이 코멘트를 감안하고 싶은, 그러나MySQL 개수로 선택 + 값의 합

$comment_query = $wpdb->get_results(" 
SELECT wp_comments.*, wp_comment_rating.*, (wp_comment_rating.ck_rating_up+wp_comment_rating.ck_rating_down) AS pop_comment 
FROM wp_comments, wp_comment_rating 
WHERE wp_comments.comment_post_ID = $post->ID 
AND wp_comments.comment_ID = wp_comment_rating.ck_comment_id 
AND wp_comments.comment_approved = 1 
ORDER BY pop_comment 
DESC 
LIMIT 1"); 

:

이것은 가장 "최대"결합 "아래로"평가 한 의견에 대한 데이터를 반환합니다 코멘트 당 매치 된 "comment_parent"의 수를 더한 다음, 그 합계를 내가 주문하는 "pop_comment"값에 더합니다.

본질적으로 가장 많이 결합 된 답글과 업/다운 등급을 가진 댓글에 대한 데이터를 얻고 싶습니다.

+0

또한 등급 개별 행이 필요하십니까? –

+0

충분히 쉬워야합니다 .. 아마 그냥 전체 query_parent를 selceting 하위 쿼리에 합류하고 다음 pop_comment에 결과를 추가 ... comment_parent는 어디에 저장되어 있습니까? 같은 테이블에? – CarpeNoctumDC

+0

단일 일치 만 원하지만 wp_comments 테이블과 wp_comment_rating 테이블에서 일치하는 모든 데이터가 필요합니다. – HWD

답변

0

당신은 comment_parent

$comment_query = $wpdb->get_results(" 
SELECT wp_comments.*, wp_comment_rating.*, (wp_comment_rating.ck_rating_up+wp_comment_rating.ck_rating_down + (
    select count(*) from wp_comments c2 where c2.comment_parent=wp_comments.comment_ID 
    )) AS pop_comment 
FROM wp_comments, wp_comment_rating 
WHERE wp_comments.comment_post_ID = $post->ID 
AND wp_comments.comment_ID = wp_comment_rating.ck_comment_id 
AND wp_comments.comment_approved = 1 
ORDER BY pop_comment 
DESC 
LIMIT 1"); 
+0

시간을내어 주셔서 감사합니다! 매우 도움이된다! – HWD

0

하여 수를 얻기 위해 하위 쿼리 수있는이에 대한 전체 의견을 얻기 위해 기본적으로는 단지 서브 쿼리를

를 작동해야 의미가 있습니다

희망 ... comment_parent 다음 필드에 SubQ/SubCount로 조인하십시오.

comment_query = $wpdb->get_results(" 
SELECT wp_comments.*, wp_comment_rating.*, (SubCount + pop_comment) AS total_rank, (wp_comment_rating.ck_rating_up+wp_comment_rating.ck_rating_down) AS pop_comment 
JOIN (SELECT COUNT(*) as SubCount, comment_parent as Sub_ID FROM wp_comments GROUP BY comment_parent) as SubQ 
ON wp_comments.comment_ID = SubQ.Sub_ID 
FROM wp_comments, wp_comment_rating 
WHERE wp_comments.comment_post_ID = $post->ID 
AND wp_comments.comment_ID = wp_comment_rating.ck_comment_id 
AND wp_comments.comment_approved = 1 ORDER BY total_rank DESC LIMIT 1"); 
+0

이 솔루션도 잘 작동했지만 조금 더 효율적이기 때문에 위의 솔루션과 함께갔습니다. 응답 해 주셔서 감사합니다. – HWD

+0

내가 실제로 게시 한 후 실제로 한계 1을 가지고 있다는 사실을 알게되었습니다 ... 나는 또한 다른 접근 방법이 더 효율적이라는 것을 발견했습니다. (나는 순위를 통해 모든 결과를 생각하고있었습니다 ...) 어느 쪽이든 .. 감사합니다. 질문 - 항상 대답을 통해 일하는 것을 좋아합니다! – CarpeNoctumDC