目標は商店街をつくる事なんです。

あきらめてるわけじゃないんです。今やっていることが、必ず力になると思うんです。

ORDER BY 句で、副問合せを使用する例。(相関副問合せ)

今日使う表(table)紹介。
 
① 社員表(emp)
SELECT * FROM emp;

f:id:itakanaya9:20130815223552p:plain

 
 
② 部門表(dept)
SELECT * FROM dept;

f:id:itakanaya9:20130815223657p:plain

 
 
 
たとえば、各部門(emp.dept_no)の代表者を表示させたい時。
 
SELECT emp_no , emp_name , dept_no 
FROM emp
GROUP BY dept_no ;
 
ってすると、

f:id:itakanaya9:20130815231146p:plain

 
こうなる。
 
上の代表者ってゆー表現がすごくあいまいやけど、
普通は、職務列とかを作って
WHERE 職務 = '部長'
みたいな感じにすると思う。
 
 
そんでこれ、たまたま部門番号(dept_no)順にならんでるけど、
これを部門名(dept.dept_name)順に並べたい時は、
・・・あんまないけど、あるかもしれんやん・・・
 
 

SELECT emp_no , emp_name , dept_no 

FROM emp e 

GROUP BY dept_no 

ORDER BY ( SELECT dept_name 

          FROM dept d 

          WHERE e.dept_no = d.dept_no);

 
 
ってすると、
 
 
こうなる。

f:id:itakanaya9:20130815234059p:plain

 

 

ちゃんとできてるでしょ。

ちなみに、ORDER BY句で使用した副問合せやけど、

副問合せの外の表も参照してるやん。

 

ORDER BY ( SELECT dept_name 
          FROM dept d 
          WHERE e.dept_no = d.dept_no);
 
これ『相関問合せ』ってゆーねんて。

 

ちなみに文字列の並べ替えとか、あんまわからん!って人は

下記参考

SELECT * FROM dept OREDR BY dept_name;

f:id:itakanaya9:20130815234253p:plain

 

おわり。