2011-03-11 11 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

簡単にできるはずです..おそらく、サブクエリに参加して、合計comment_parentを選択し、その結果をあなたのpop_commentに追加するだけです。comment_parentはどこに保存されていますか?同じテーブルに? – CarpeNoctumDC

+0

私は1つのマッチだけを必要としますが、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

でカウントを取得するために副問合せができコメントを追加して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

関連する問題