1つのテーブルを結合する (自己結合)
自己結合
SELECT * FROM テーブル1 AS 別名1 INNER JOIN テーブル2 AS 別名2 ON 別名1.フィールド = 別名2.フィールド;
元テーブル
select * from SQL人間関係 as t1 inner join SQL人間関係 as t2 on t1.苦手な人 = t2.ID
select t1.ID, t1.氏名, t2.氏名 from SQL人間関係 as t1 inner join SQL人間関係 as t2 on t1.苦手な人 = t2.ID
1つのテーブルに「別名」をつけて結合を行うと、1つのテーブルの中で「自己結合」を行うことができる。
結合後のフィールド名にも別名を使用する
select t1.ID, t1.氏名 as この人は, t2.氏名 as この人が苦手 from SQL人間関係 as t1 inner join SQL人間関係 as t2 on t1.苦手な人 = t2.ID
自己結合を行う際には、同名フィールドが存在するために、SQLの結果セットを格納したFieldオブジェクトのNameプロパティは「別名.フィールド名」となる。
これでは見にくいのでフィールド名にも「別名」を使用する。
特定の値を元に結合を行う
自己結合
SELECT * FROM テーブル1, テーブル2 WHERE テーブル1.基準となるフィールド BETWEEN テーブル2.最小値フィールド AND テーブル2.最大値フィールド;
元テーブル
select SQLテスト結果.氏名, SQLテスト結果.点数, SQL評価.評価 from SQLテスト結果, SQL評価 where SQLテスト結果.点数 between SQL評価.最小値 and SQL評価.最大値;
「SQLテスト結果」テーブルの「点数」フィールドの値を「SQL評価」テーブルの「最小値」フィールドと「最大値」フィールドの値を元にして結合し、対応する「評価」フィールドの値を取得している。