0
UPDATE wp_postmeta
set meta_value = 'a:1:{i:0;s:6:"Subbed";}' 
WHERE meta_key = 'episode_sdversion'

これは基本的に私が到達できる距離です。これは単に、wp_postmetaテーブルを更新して列meta_valuea:1:{i:0;s:6:"Subbed";}いつに設定したいのかを意味します。meta_keyepisode_sdversion

ここに問題があります。別の WHERE 句を取得したいのです。しかし、その「WHERE」を取得するには、複数のテーブルから情報を取得する必要があります。

name最初の単語「Subbed」を持つテーブル wp_terms 列から、term_id 列から ID を取得します。だから私はそれがこのように動作すると思います

SELECT term_id
FROM  `wp_terms` 
WHERE  `name` LIKE  '%Subbed %'

次に、テーブルで取得した term_id 値を使用してwp_term_relationships 、列の値と等しいかどうかを確認しterm_taxonomy_id、次にobject_id列 WHEREの値と等しいかどうかを確認しますterm_taxonomy_id = whatever you just got from before。これは、2 番目の WHERE 句となるの列object_idと同じになります...post_idwp_postmeta

私の最終的なコードはこれに似たものになります

UPDATE wp_postmeta
set meta_value = 'a:1:{i:0;s:6:"Subbed";}' 
WHERE meta_key = 'episode_sdversion'
AND WHERE post_id = the ID that I am trying to get from going through different tables

また、...を使用することもできますので、空白の場合にWHERE meta_value = ''のみmeta_valueを設定してください...a:1:{i:0;s:6:"Subbed";}meta_value = ''

ですから、他のテーブルから情報を取得し、それをある種の変数に保持して、最終的なクエリで参照する方法について何かアイデアがあれば、それは素晴らしいことですか、または複数のクエリを組み合わせますか?

4

2 に答える 2

0

私は同意します-あなたの質問は理解するのが非常に難しいです。テーブル構造、サンプルデータ、および必要な出力を投稿できれば、これは非常に簡単になります。

しかし、私があなたの要件を正しく理解しているなら、これは近いはずです:

UPDATE wp_postmeta
SET meta_value = 'a:1:{i:0;s:6:"Subbed";}' 
WHERE meta_key = 'episode_sdversion' AND
    post_id IN (
       SELECT tr.object_id 
       FROM  wp_terms t
          JOIN wp_term_relationships tr ON t.term_id = tr.term_taxonomy_id 
       WHERE  t.name LIKE '%Subbed %'   
   ) AND meta_value = ''

私の理解が正しければ、これもうまくいくかもしれません:

UPDATE wp_postmeta pm
    JOIN wp_term_relationships tr ON pm.post_id = tr.object_id
    JOIN wp_terms t ON t.term_id = tr.term_taxonomy_id 
SET pm.meta_value = 'a:1:{i:0;s:6:"Subbed";}' 
WHERE pm.meta_key = 'episode_sdversion'
    AND t.name LIKE '%Subbed %' 
    AND meta_value = ''
于 2013-02-28T00:18:07.963 に答える
0

これはくだらない方法です。誰かが来て、純粋に結合されたソリューションを投稿した場合は、それを使用してください。また、あなたが使用しているすべてのテーブルをかろうじて解読することはできません。あなたが何をしようとしているのかを正確に理解することはできません。これはあなたの心を読むための最善の努力です.

UPDATE wp_postmeta
set meta_value = 'a:1:blahblbah'
WHERE meta_key='episode_sdversion'
  AND post_id in(SELECT post_id FROM wp_terms WHERE name like '%Subbed%');

サブクエリで実行する必要があるように見える結合がありますが、投稿からはそれが何であるかわかりません。ここから理解できない場合は、他のテーブルに関する詳細情報を投稿してください。ただし、次のようになります。

UPDATE wp_postmeta
set meta_value = 'a:1:blahblbah'
WHERE meta_key='episode_sdversion'
  AND post_id in(SELECT post_id
    FROM wp_terms 
    JOIN OTHERTABLE on OTHERTABLE.PK=wp_terms.PK
    WHERE name like '%Subbed%' and OTHERTABLE.WhateverColumn='whatevervalue');

情報を与えられた私ができる最善のことです。楽しみ。

于 2013-02-28T00:09:29.407 に答える