ユーザー情報の表示(wp_users)
ユーザー名などのユーザー情報が保存されているテーブルはwp_usersになります。
このテーブルとポストwp_postsを結合してみましょう。
記事一覧にユーザー情報を表示
テーブルの結合はJOIN句にテーブル名。ON句に結合条件を記述します。
条件はwp_postsのpost_authorがユーザーIDになるので、これとwp_usersのIDと結びつけます。

SELECT * FROM wp_postsJOIN wp_usersON wp_posts.post_author = wp_users.ID指定ユーザーの記事を検索
テーブルを結合した後は普通にWHEREで条件を指定できます。
user_loginがadminを検索したい場合は下記のようにします。
SELECT * FROM wp_postsJOIN wp_usersON wp_posts.post_author = wp_users.IDWHERE user_login = "admin"SELECTの詳細選択と別名
ソースコード省略のためSELECTには*ですべてのカラムを選択してますが、通常はカラムを指定することになると思います。
しかし、複数のテーブルを選択すると単純にIDと指定しても、どのテーブルのIDかわからないですね。
その為、複数のテーブルを扱うときはSELECTには「テーブル名.カラム名」のような記述にします。
SELECT wp_posts.ID, wp_posts.post_title, wp_posts.post_date, wp_users.display_nameテーブル名(wp_posts)を何度も書かなくてはいけないので長いとめんどいですよね。FROM後にASで別名を付けて短縮してみましょう。
SELECT p.ID, p.post_title, p.post_date, u.display_nameFROM wp_posts AS pJOIN wp_users AS uON u.ID = p.post_authorだいぶすっきりしましたね。
カテゴリー・タグで検索(wp_terms)
WordPressはカテゴリーやタグはまとめてタームと呼ばれたりもします。
タームは一つの記事に複数のタームが関連付けされる可能があります。
リレーショナルデータベースではこの場合、テーブルとテーブルの間に関連付けするだけの中間テーブルを作ることが多いです。
WordPressの場合ターム情報はwp_postsとwp_term_taxonomyの中間テーブルとしてwp_term_relationshipsテーブルがあり、さらにwp_termsに名称などの記載があります。
その他にカスタムフィールド用のテーブルwp_termmetaがあり、ターム関係のテーブルだけで4つのテーブルがあります。

ターム名で検索したい場合はwp_termmeta以外の4つを結合します。
ターム名のWordPressに属している投稿を検索する場合は次のようになります。
SELECT p.ID, p.post_title, p.post_date FROM wp_posts AS pJOIN wp_term_relationships AS tr ON tr.object_id = p.IDJOIN wp_term_taxonomy AS tt ON tt.term_taxonomy_id = tr.term_taxonomy_idJOIN wp_terms AS t ON t.term_id = tt.term_idWHERE p.post_type = "post" AND p.post_status = "publish" AND t.name = "WordPress"カスタムフィールドで検索(wp_postmeta)
カスタムフィールドはwp_postmetaテーブルに保存されています。
このテーブルはpost_idが投稿のIDになっているのでwp_postsのIDと結合します。

例えばpriceというカスタムフィールドの値が1000以上の投稿を検索したい場合は次のようになります。
SELECT DISTINCT p.ID, p.post_title, p.post_date, meta.meta_value FROM wp_posts AS pLEFT JOIN wp_postmeta AS meta ON meta.post_id = p.IDWHERE meta.meta_key = "price" AND meta.meta_value > 1000

