거의 안쓰는 기능이다. 안의 내용을 안보고 그냥 있는거 다 붙이는거다.
Example
출력되는 튜플의 개수를 출력하라.
SELECT COUNT(*)
FROM (
SELECT TEAM_ID, TEAM_NAME, TEAM.STADIUM_ID, STADIUM_NAME
FROM TEAM CROSS JOIN STADIUM
ORDER BY TEAM_ID
) AS TEMP;
동일 테이블 사이의 조인이다.
recursive relationship을 가지는 테이블이다.
한 테이블에 자신의 PK를 참조하는 FK가 같이 존재한다.
Example
SELECT *
FROM employee;
직원과 직원의 상급자에 대해, 각각 주민번호와 이름을 출력하시오.
SELECT emp.Ssn,
CONCAT(emp.Fname, ', ', emp.Minit, '. ', emp.Lname) AS Employee,
mgr.Ssn,
CONCAT(mgr.Fname, ', ', mgr.Minit, '. ', mgr.Lname) AS Manager
FROM employee emp JOIN employee mgr ON emp.Super_ssn = mgr.ssn;
직원 테이블과 상급자 테이블을 JOIN 시킨다. 만약, 사장도 포함시키고 싶으면 LEFT JOIN 하면 된다.
사원, 사원의 상위 관리자의 이름을 검색하라.
SELECT CONCAT(emp.Fname, ', ', emp.Minit, '. ', emp.Lname) AS Employee,
CONCAT(mgr.Fname, ', ', mgr.Minit, '. ', mgr.Lname) AS Manager
FROM employee emp JOIN employee mgr ON emp.Super_ssn = mgr.ssn;
사원, 사원의 상위 관리자의 이름을 검색하라.
단, 상위 관리자가 없는 사원도 출력하라.
SELECT CONCAT(emp.Fname, ', ', emp.Minit, '. ', emp.Lname) AS Employee,
CONCAT(mgr.Fname, ', ', mgr.Minit, '. ', mgr.Lname) AS Manager
FROM employee emp LEFT JOIN employee mgr ON emp.Super_ssn = mgr.ssn;
사원, 사원의 상위 관리자 및 차상위 관리자의 이름을 검색하라.
단, 상위 관리자 혹은 차상위 관리자가 없는 사원도 출력하라.
SELECT CONCAT(emp.Fname, ', ', emp.Minit, '. ', emp.Lname) AS Employee,
CONCAT(mgr.Fname, ', ', mgr.Minit, '. ', mgr.Lname) AS Manager
CONCAT(mgrOfMgr.Fname, ', ', mgrOfMgr.Minit, '. ', mgrOfMgr.Lname)
AS ManagerOfManager
FROM employee emp
LEFT JOIN employee mgr ON emp.Super_ssn = mgr.ssn
LEFT JOIN employee mgrOfMgr ON mgr.Super_ssn = mgrOfMgr.ssn;