数据在本专栏的第一篇博客里
本篇是连接查询,用sql92标准,下一篇是99。
开始快乐起来了,到处找表
题目汇总
7.1.显示所有员工的姓名、部门号和部门名称
SELECT
e.last_name,
e.department_id,
d.department_name
FROM
departments d,
employees e
WHERE
d.department_id = e.department_id;
7.2.查询90号部门员工的job_id
和90号部门的location_id
SELECT
e.job_id,
d.location_id
FROM
employees e,
departments d
WHERE
e.department_id = d.department_id
AND d.department_id = 90;
7.3.选择所有有奖金的员工的last_name,department_name,location_id,city
SELECT
e.last_name,
d.department_name,
d.location_id,
l.city
FROM
departments d,
employees e,
locations l
WHERE
d.department_id = e.department_id
AND d.location_id = l.location_id
AND e.commission_pct IS NOT NULL; #有奖金的
7.4.选择city
在Toronto
工作的员工的last_name,job_id,department_id,department_name
SELECT
e.last_name,
e.job_id,
d.department_id,
d.department_name
FROM
departments d,
employees e,
locations l
WHERE
d.department_id = e.department_id
AND l.city = 'Toronto'
AND d.location_id = l.location_id;
7.5.查询每个工种,每个部门的部门名、工种名和最低工资
SELECT
department_name,
job_title,
MIN( salary ) '最低工资'
FROM
employees e,
departments d,
jobs j
WHERE
e.department_id = d.department_id
AND e.job_id = j.job_id
GROUP BY
department_name,
job_title;
7.6.查询每个国家下的部门个数大于2的国家编号
#有一点点难
SELECT
country_id,
count(*)
FROM
departments d,
locations l
WHERE
l.location_id = d.location_id
GROUP BY
country_id
HAVING
count(*)> 2;
7.7.选择指定员工的姓名、员工号,以及他的管理者的姓名和员工号
结果类似下面的格式:
employees Emp# manager Mgr#
kochhar 101 king 100
#代码如下:
#自连接,有一点点绕
SELECT
e.last_name employees,
e.employee_id 'Emp#',
m.last_name manager,
m.manager_id 'Mgr#'
FROM
employees e, #自己的员工表
employees m #自己的管理表
WHERE
e.manager_id = m.employee_id;