プログラム関係の備忘録。技術系記事1000記事以上を目指すブログ

【WordPress】自作テーブルをINNER JOINし任意のデータを取ってくる

はじめに

前回、phpMyAdminでWordPressのデータが入っているテーブルに新たにテーブルを追加し、SQLでデータを取得した。
【WordPress】自作テーブルを追加してデータ管理をしてみる

復習

<?php
$results = $wpdb->get_results("
 SELECT
  name
 FROM
  $wpdb->items
 ");

foreach ($results as $value) {
    print('<li>'.$value->name.'</li>');
}

?>

INNER JOINを使い複数テーブルを内部結合する

$wpdbの箇所以外は単純なSQL。

<?php
$results = $wpdb->get_results("
    SELECT *
    FROM $wpdb->table_a
    INNER JOIN $wpdb->table_b
    ON $wpdb->table_a.code = $wpdb->table_b.code
	WHERE $wpdb->table_b.type = 2
");
foreach ($results as $value) {
    print('<li>「'.$value->name."」".$value->code.'</li>');
}
?>

上記ではtable_aとtable_bのコードをJOINし、table_bのタイプが2のものをSELECTする。
同じSQLを簡略化すると以下のようにも書くことができる

<?php
$results = $wpdb->get_results("
    SELECT *
    FROM $wpdb->table_a 
    INNER JOIN $wpdb->table_b b
    USING(code)
    WHERE b.type = 2
");
foreach ($results as $value) {
    print('<li>「'.$value->name."」".$value->code.'</li>');
}
?>
USING(○○)
…JOINするテーブルのカラムが共通の名前の場合に使用できる

テーブル名 AS 略名
…エイリアス名をつけ長いテーブル名を簡略化できる。
ASは省略可。