0

バックグラウンド

wordpress.org フォーラムでいくつかのコードを見つけました。カスタムフィールドが設定されているかどうかに応じてカウンターが設定されるように変更したいと思います。私の場合、カスタムフィールドのキーが「期限切れ」で、値が「1」の場合、カウントされません。

MySQL

私の場合、SQLはこのようにレンダリングされます...

UPDATE wi1_term_taxonomy tt SET count = (SELECT count(p.ID) FROM wi1_term_relationships tr LEFT JOIN wi1_posts p ON (p.ID = tr.object_id AND p.post_type = 'product' AND p.post_status = 'publish') WHERE tr.term_taxonomy_id = tt.term_taxonomy_id) WHERE tt.taxonomy = 'color'

カスタムフィールドの一部がありません

欠けているのは、カスタム フィールドがチェックされる「場所」の部分です。

質問 - 結果を選択しますか?

上記に対する答えを得るには、QA 用にローカライズする必要があります。私の質問は代わりに...

何かを変更する前に結果を確認するために、更新の代わりに選択を使用してクエリをすばやくテストできる方法でクエリを変更できますか? それ以外の場合は、更新された値を毎回見つけてリセットする必要があります。

これまでに試したこと

  • update の代わりに select を使用しようとしましたが、さまざまなエラーが発生してあきらめました。
  • 途中で選択部分を分解しようとしたため、som ttの欠落の問題が発生しました。
4

2 に答える 2

0

以下を使用してクエリをテストすることをお勧めします。

SELECT tr.term_taxonomy_id, count(p.ID)
FROM wi1_term_relationships tr LEFT JOIN 
     wi1_posts p
     ON (p.ID = tr.object_id AND p.post_type = 'product' AND p.post_status = 'publish')

そして、結合を使用して更新を行うこと:

UPDATE wi1_term_taxonomy tt join
       (SELECT tr.term_taxonomy_id, count(p.ID) as cnt
        FROM wi1_term_relationships tr LEFT JOIN 
             wi1_posts p
             ON (p.ID = tr.object_id AND p.post_type = 'product' AND p.post_status = 'publish')
        group by term_taxonomy_id
WHERE tt.taxonomy = 'color';

これにより、テストと更新の両方でまったく同じクエリを使用できます。

于 2013-07-29T20:20:03.583 に答える