ORDER BY 句で、副問合せを使用する例。(相関副問合せ)
今日使う表(table)紹介。
① 社員表(emp)
SELECT * FROM emp;
② 部門表(dept)
SELECT * FROM dept;
たとえば、各部門(emp.dept_no)の代表者を表示させたい時。
SELECT emp_no , emp_name , dept_no
FROM emp
GROUP BY dept_no ;
ってすると、
こうなる。
上の代表者ってゆー表現がすごくあいまいやけど、
普通は、職務列とかを作って
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);
ってすると、
こうなる。
ちゃんとできてるでしょ。
ちなみに、ORDER BY句で使用した副問合せやけど、
副問合せの外の表も参照してるやん。
ORDER BY ( SELECT dept_name
FROM dept d
WHERE e.dept_no = d.dept_no);
これ『相関問合せ』ってゆーねんて。
ちなみに文字列の並べ替えとか、あんまわからん!って人は
下記参考
SELECT * FROM dept OREDR BY dept_name;
おわり。