SQL攻略 - Web上でSQLを実行しながらマスターするサイト
English ver [15 Inquiry to multiple tables] is here.
ホーム >> SQL攻略 - 複数表への問い合わせ

複数表への問い合わせ

ここではSELECT文を使って、複数の表からデータを取り出す方法を学習します。

1.条件結合

ここからは今までのEMP表に加えDEPT(部門)表を使用します。

DEPTNODNAMELOC
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON

--EMP表とDEPT表の結合
SELECTEMP.EMPNO,EMP.ENAME,DEPT.DEPTNO,DEPT.DNAME
FROMEMP,DEPT
WHEREEMP.DEPTNO = DEPT.DEPTNO

複数表からの問い合わせを行う場合は、FROMの後ろに表名を「,(カンマ)」で区切って記述します。

HERE条件のEMP.DEPTNO = DEPT.DEPTNOで、EMP表のDEPTNOとDEPT表のDEPTNOが等しい列を連結するという意味になります。

SELECT文の直後の項目名に、「表明.項目名」という記述をしているのは、表を連結して両方の表に同じ項目名があった場合、どちらの項目を表示するかを指定するためです。(DEPTNOとだけ指定されるとDBMSはどちらを表示するかがわからなくてエラーになります。)

連結した表からさらに条件で絞る場合は、WHERE条件にAND EMP.SAL > 1500のように記述します。

それでは実習です。2題出題します。


2.エイリアス(別名)

--EMP表とDEPT表の結合
SELECTE.EMPNO,E.ENAME,D.DEPTNO,D.DNAME
FROMEMP E,DEPT D
WHEREE.DEPTNO = D.DEPTNO

上記のSQLは「条件結合」とまったく同じ意味です。異なる点は表にエイリアス(別名)を付けて記述を簡便化している点です。

DEPTやEMPのように短い表名ですとあまり便利さがわかりませんが、実務においては「前月末全店売上高集計」のように非常に長いテーブル名があります。そのようなときには非常に便利です。

それでは実習です。1題出題します。

これで [ 複数表への問合せ ] は終了です。