[WordPress] ある正規化されたデータを選択する方法、値が存在

スポンサーリンク

質問

私はテーブルを持っている、ワードプレス、wp_commentmeta からユーザーがコメントをしたいようにやって。このように見えます

+---------+------------+-----------------------+---------------------+
| meta_id | comment_id | meta_key              | meta_value          |
+---------+------------+-----------------------+---------------------+
|      23 |          6 | like                  | 2                   |
|      31 |          8 | like                  | 1                   |
|      32 |          6 | like                  | 1                   |
+---------+------------+-----------------------+---------------------+

ユーザー 2 が好きですどのようなコメントを取得する方法を知っている

SELECT * FROM `wp_commentmeta` WHERE meta_key="like" AND meta_value=2

が知りたいです。出力は次のように見えるようにユーザー 2 に好かれていないコメントだけを得るように select ステートメントを構築することは可能ですか?

+---------+------------+----------+------------+
| meta_id | comment_id | meta_key | meta_value |
+---------+------------+----------+------------+
|      31 |          8 | like     |  -         |
+---------+------------+----------+------------+

の答え

はい。集約と

having

句を使用することができます:

select comment_id
from wp_commentmeta
where meta_key = 'like'
group by comment_id
having sum(meta_value = 2) = 0;

having

句で

sum()

の数をカウント、ユーザーが

2

が好きです。

= 0

は、どれも言う

注: こののみ が好き ですが、2 に好かれていないコメントが選択されます。またコメントが気に入ったことがない場合、し必要がありますコメントのリスト何とか。あなたの質問はこの変化のための十分な情報を持っていません

答え

あなた集計、しかしおそらく遅い動作はほとんどのことを行うことができます。これは NOT EXISTS を持つ例

 SELECT
    *
 FROM
    wp_commentmeta c
 WHERE
    meta_key = "like"
    AND NOT EXISTS ( SELECT
                        1
                     FROM
                        wp_commentmeta c1
                     WHERE
                        c1.metavalue = 2
                        AND c1.comment_id = c.comment_id
                        AND meta_key = "like" )

http://stackoverflow.com/questions/29276082/is-there-a-way-to-select-normalized-data-where-a-value-is-not-present

スポンサーリンク

Leave a Reply