postmeta テーブルを使用して wordpress のカスタム コードを作成しています。アイテムはここに格納され、共通の pk1 は post_id です。
ただし、私がやっていることには、次のようなポストメタのクリック可能な部分がたくさんあります
- source_site
- source_author
- source_rating
または似たようなもの。これで、同じ source_site または source_author を持つ異なる投稿の複数の投稿データがテーブルに保持されます。
次に、ユーザーが source_author をクリックすると、この source_author にリンクしているすべての投稿または記事を含む新しいテーブルに移動します。
問題は、投稿 ID の pk1 経由ではなく、postmeta 値にリンクしていることです。
これは、追加のクエリを実行するか、同じテーブルに結合する必要がある残りのデータを取得することを意味します。
これは私の質問につながります。結合またはサブクエリを実行する方が良いでしょうか。
さらなる問題は、postmeta テーブルにさまざまなデータとキーと値がすべて格納されるため、必要な他の部分を照会するのが難しくなることです。
テーブルは次のようになります
|meta_id|post_id|meta_key|meta_value|
|1 | 2 |source_author | Dan Holmes |
|2 | 2 |source_site |http://somesite.com|
このデータを取得する最もクリーンな方法を探しているだけですが、それ以外の場合は、作成者のために最初にデータを取得することしか考えられません。
$the_post_ids = select post_id from postmeta where meta_key='source_author' and meta_value='Dan Holmes'
foreach($the_post_ids as $post_id) {
select * from postmeta where post_id=$post_id;
}
これはすべて非常に疑似コードであり、データがかなり大きくなり始めると、クリックできるセクションごとに多くのオーバーヘッドが発生するのではないかと心配しています。単一の配列に複数の選択を行う。
これを処理するより良い方法はありますか?