前提・実現したいこと
2つのテーブルをまとめて1つのテーブルとして表示しCSVでダウンロードしたいです
2つのテーブルがあります
テーブル1 wp_posts
| post_id | post_name | post_type |
|---|---|---|
| 1 | post-name-1 | post_type_1 |
| 2 | post-name-2 | post_type_2 |
| 3 | post-name-3 | post_type_1 |
| 4 | post-name-4 | post_type_3 |
テーブル2 wp_postmeta
| post_id | meta_key | meta_value |
|---|---|---|
| 1 | meta_key_img | meta_value_1_img |
| 1 | meta_key_text | meta_value_1_text |
| 2 | meta_key_img | meta_value_2_img |
| 2 | meta_key_text | meta_value_2_text |
| 3 | meta_key_img | meta_value_2_img |
| 3 | meta_key_text | meta_value_3_text |
テーブル1のpost_typeがpost_type_1のもの、かつ
テーブル2のpost_idがテーブル1のもののmeta_keyをテーブルの列にしてそのmeta_valueを表にして出力させたいです
最終的に出力したいのは以下のようなテーブルです
| post_id | post_name | post_type | meta_key_img | meta_key_text | meta_value |
|---|---|---|---|---|---|
| 1 | post-name-1 | post_type_1 | meta_value_1_img | meta_value_1_text | post_type_1 |
| 3 | post-name-3 | post_type_1 | meta_value_3_img | meta_value_3_text | post_type_1 |
試したこと
wp_postsテーブルからpost_type_1のものを取得するSQLはわかりました
SQL
1SELECT * FROM `wp_posts` WHERE `post_type` = 'post_type_1'
しかし、2つのテーブルを関連付けて出力する、テーブルのデータをキーにする方法がわからずお心優しい方教えていただけませんか。
補足情報(FW/ツールのバージョンなど)
FW:WordPress
開発環境:Local,Adminer
###追記
ご回答いただいたINNER JOINを使用した結果
SQL
1SELECT * FROM wp_postmeta INNER JOIN wp_posts ON wp_postmeta.post_id=wp_posts.ID
| post_id | post_name | post_type | meta_key | meta_value |
|---|---|---|---|---|
| 1 | post-name-1 | post_type_1 | meta_key_img | meta_value_1_img |
| 1 | post-name-1 | post_type_1 | meta_key_text | meta_value_3_text |
このようには表示出来るのですが本来は以下のような形で表示させたいです
| post_id | post_name | post_type | meta_key_img | meta_key_text |
|---|---|---|---|---|
| 1 | post-name-1 | post_type_1 | meta_value_1_img | meta_value_3_text |
回答3件
あなたの回答
tips
プレビュー