PHP で MySQL を操作するのに役立つリファレンス

MySQL FAQ

一時テーブル同士で外部結合はできますか?

スポンサードリンク

一時テーブル同士でも外部結合できます。

MySQL では CREATE TEMPORARY TABLE で一時テーブルを作成できますが、この一時テーブル同士は通常のテーブルと同様に外部結合することができます。

実際の SQL で試す為、まずは以下の事前準備のサンプルコードで一時テーブルを作成してテストデータを登録してみます。

事前準備
/* トランザクションの一時テーブルを作成 */
CREATE TEMPORARY TABLE ORDER_LIST (
  ORDER_ID INT,
  ITEM_ID  INT
);

/* マスタの一時テーブルを作成 */
CREATE TEMPORARY TABLE ITEM_LIST (
  ITEM_ID  INT,
  ITEM_NAME VARCHAR(20)
);

/* テストデータを登録 */
INSERT INTO ORDER_LIST VALUES(1, 1);
INSERT INTO ORDER_LIST VALUES(2, 1);
INSERT INTO ORDER_LIST VALUES(3, 2);
INSERT INTO ORDER_LIST VALUES(4, 3);
INSERT INTO ORDER_LIST VALUES(5, 2);
INSERT INTO ITEM_LIST VALUES(1, 'cocoa');
INSERT INTO ITEM_LIST VALUES(2, 'coffee');
INSERT INTO ITEM_LIST VALUES(3, 'tea');

作成した一時テーブル同士を次の SQL で外部結合してみます。

/* 一時テーブル同士を外部結合して全件抽出 */
SELECT
  ORDER_LIST.ORDER_ID,
  ORDER_LIST.ITEM_ID,
  ITEM_LIST.ITEM_NAME
FROM
  ORDER_LIST
  LEFT OUTER JOIN ITEM_LIST
          ON ORDER_LIST.ITEM_ID = ITEM_LIST.ITEM_ID
ORDER BY
  ORDER_LIST.ORDER_ID;

実行結果は次の通りで、一時テーブル同士で外部結合できていることが確認できます。

+----------+---------+-----------+
| ORDER_ID | ITEM_ID | ITEM_NAME |
+----------+---------+-----------+
|        1 |       1 | cocoa     |
|        2 |       1 | cocoa     |
|        3 |       2 | coffee    |
|        4 |       3 | tea       |
|        5 |       2 | coffee    |
+----------+---------+-----------+
5 rows in set (0.00 sec)
スポンサードリンク

一時テーブル

その他のカテゴリー一覧