職案人

求職・歴史・仏教などについて掲載するつもりだが、自分の思いつきが多いブログだよ。適当に付き合って下さい。

SQLIteの自己結合

2020年07月24日 | sqlite
同じテーブルを対象に結合する(自己結合)


【開発環境】
OS:Win10(64ビット)
データベース:SQLite3
コマンドプロンプト入力

【自己結合】
内部結合や外部結合では通常複数のテーブルを結合しますが、自分自身のテーブルと結合をすることも可能です。このような結合を自己結合と呼んでいます。

・外部結合の書式
SELECT 別名1.カラム名, ...
FROM テーブル名 別名1 LEFT OUTER JOIN テーブル名 別名2
ON 別名1.カラム名 = 別名2.カラム名;
実践
SQLite version 3.31.1 2020-01-27 19:55:54
Enter ".help" for usage hints.
sqlite> .tables
color earn kantou product user
dept foods olduser test user1
sqlite> create table staff(id integer, name text, bossid integer);
sqlite> insert into staff values(1, 'Yamada', 3);
sqlite> insert into staff values(2, 'Itou', 4);
sqlite> insert into staff values(3, 'Suzuki', 5);
sqlite> insert into staff values(4, 'Ueda', 3);
sqlite> insert into staff values(5, 'Kuroda', 0);
sqlite> .header on
sqlite> .mode column
sqlite> select person.id, person.name, boss.name from staff person
...> left outer join staff boss
...> on person.bossid = boss.id;
id name name
---------- ---------- ----------
1 Yamada Suzuki
2 Itou Ueda
3 Suzuki Kuroda
4 Ueda Suzuki
5 Kuroda
sqlite>
赤い所はテーブルが存在してない

・内部結合の書式
SELECT 別名1.カラム名, ...
FROM テーブル名 別名1 INNER JOIN テーブル名 別名2
ON 別名1.カラム名 = 別名2.カラム名;
実践
sqlite> select person.id, person.name, boss.name from staff person
...> INNER join staff boss
...> on person.bossid = boss.id;
id name name
---------- ---------- ----------
1 Yamada Suzuki
2 Itou Ueda
3 Suzuki Kuroda
4 Ueda Suzuki
sqlite>

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« SQLIteの自然結合 | トップ | SQLiteの集計関数--1 »
最新の画像もっと見る

コメントを投稿

sqlite」カテゴリの最新記事