表に別な名前を付ける(表の別名指定)
スポンサードリンク
表(テーブル)に別の名前を付けることができる。
表に別な名前を付けることで、SQL文を簡潔に記述できたり、同じ表を結合する自己結合などが行える。
表の別名指定の方法
表に別な名前を指定するときの記述形式は、FROM句で以下のように記述する。
表の別名指定の記述形式
FROM 表の名前 AS 表の別の名前
または
FROM 表の名前 表の別の名前
*ASは省略可能である。
例えば、学籍表をAという別名指定を行う場合は、FROM句で「FROM 学籍表 AS A」または「FROM 学籍表 A」と記述すればよい。
《例題》
売上表をX、顧客表をYという別名指定をおこない顧客CDで表を結合する。
SELECT文
SELECT *
FROM 売上表 X, 顧客表 Y
WHERE X.顧客CD=Y.顧客CD
− 実行結果 −
売上No | 日付 | X.顧客CD | Y.顧客CD | 顧客名 |
---|---|---|---|---|
1 | 2001/05/27 | 105 | 105 | 福岡商事 |
2 | 2001/05/27 | 101 | 101 | 二島商店 |
3 | 2001/05/27 | 103 | 103 | 大阪物産 |
4 | 2001/06/27 | 102 | 102 | 姫路商事 |
5 | 2001/06/27 | 104 | 104 | 神戸商店 |
6 | 2002/01/31 | 106 | 106 | 明石物産 |
WHERE句で「WHERE X.顧客CD=Y.顧客CD」と記述している。表の別名指定をおこなっていなければ「WHERE 売上表.顧客CD=顧客表.顧客CD」と記述しなければならない。このことから売上表がX、顧客表がYという別名で処理されていることが分かる。
同じ表を結合する(自己結合)
表に別の名前を付けることで同じ表を結合する自己結合ができる。
《例題》
社員表より各社員のリーダーの名前を表示させる。
社員No | 社員名 | リーダー |
---|---|---|
001 | くく | 001 |
002 | まゆ | 002 |
003 | りん | 001 |
004 | むふ | 001 |
005 | メル | 002 |
考え方は社員表を表の別名指定を使ってリーダー表を定義する。そして、社員表のリーダーとリーダー表の社員Noで表を結合すればよい。
社員表とリーダーを結合すると以下のようになる。
以上からSELECT文は次のようになる。
SELECT文
SELECT 社員表.社員名,リーダー.社員名 AS リーダー
FROM 社員表,社員表 リーダー
WHERE 社員表.リーダー=リーダー.社員No
− 実行結果 −
社員名 | リーダー |
---|---|
くく | くく |
まゆ | まゆ |
りん | くく |
むふ | くく |
メル | まゆ |
自分自身がリーダーの場合は表示しないようにするには、社員表のリーダーとリーダーの社員Noが等しくないものを表示させればよい。したがって、WHERE句に以下の条件を追加すればよい。
SELECT文
SELECT 社員表.社員名,リーダー.社員名 AS リーダー
FROM 社員表,社員 リーダ
WHERE 社員表.リーダー=リーダー.社員No AND
社員表.リーダー <> リーダー.社員No
− 実行結果 −
社員名 | リーダー |
---|---|
りん | くく |
むふ | くく |
メル | まゆ |
自己結合に限らず表の結合すべてに共通して言えることだが、SELECT文から実行結果を求めるには、まず表の結合結果を書いて、その後に抽出条件に合った行を選べばよい。ポイントは、実際に書くことである。