タクソノミーIDをタームIDに変えてデータを取得するSQL(サブクエリ) wordpressのためのsql

wp_term_relationshipsテーブルとwp_postsテーブルを結合する時に不便なのがwp_term_relationshipsにterm_idが無いことです。
term_taxonomy_idはあるのですが。。。
気をつけたいのがterm_taxonomy_idとterm_idは必ずしも同じではないのです。
term_taxonomy_idとterm_idを紐づけるにはwp_term_taxonomyテーブルも必要になりますがこのためだけに3つのテーブルを結合するのは面倒ですよね?
そんな時の便利なSQLを紹介します。

SELECT wp_posts.*
FROM   wp_term_relationships
INNER  JOIN wp_posts
ON     wp_term_relationships.object_id = wp_posts.id
WHERE  wp_term_relationships.term_taxonomy_id=
	 (
	  SELECT term_taxonomy_id
	  FROM wp_term_taxonomy
	  WHERE term_id = /*タームIDを指定する*/
	 )
AND    wp_posts.post_status = "publish"

term_idでデータベースに問い合わせする際はpost_type=”post”の指定はいりません。
固定ページにはカテゴリーもタグもないからです。
wp_postsテーブルとwp_term_relationshipsテーブルを内部結合、post_idとobject_id を結合条件にしています。
注目して欲しいのがWHERE句です。
wp_term_taxonomyテーブルからterm_idで問合わせて、term_taxonomy_idを取得しています。
この取得したterm_taxonomy_idをそのまま条件に指定します。これをサブクエリといいます。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする