Решения к упражнениям
283
SELECT 'trainee' name, '20040101' start_dt, '20051231' end_dt
UNION ALL
SELECT 'worker' name, '20020101' start_dt, '20031231' end_dt
UNION ALL
SELECT 'mentor' name, '20000101' start_dt, '20011231' end_dt
Дайте подзапросу псевдоним
levels
(уровни) и включите ID сотрудни
ка, имя, фамилию и квалификацию (
levels.name
). (Совет: в условии со
единения определяйте диапазон, в который попадает столбец
employee
.start_date
, с помощью условия неравенства.)
mysql>
SELECT e.emp_id, e.fname, e.lname, levels.name
> FROM employee e INNER JOIN
> (SELECT 'trainee' name, '20040101' start_dt, '20051231' end_dt
> UNION ALL
> SELECT 'worker' name, '20020101' start_dt, '20031231' end_dt
> UNION ALL
> SELECT 'mentor' name, '20000101' start_dt, '20011231' end_dt) levels
> ON e.start_date BETWEEN levels.start_dt AND levels.end_dt;
+++++
| emp_id | fname | lname | name |
+++++
| 6 | Helen | Fleming | trainee |
| 7 | Chris | Tucker | trainee |
| 2 | Susan | Barker | worker |
| 4 | Susan | Hawthorne | worker |
| 5 | John | Gooding | worker |
| 8 | Sarah | Parker | worker |
| 9 | Jane | Grossman | worker |
| 10 | Paula | Roberts | worker |
| 12 | Samantha | Jameson | worker |
| 14 | Cindy | Mason | worker |
| 15 | Frank | Portman | worker |
| 17 | Beth | Fowler | worker |
| 18 | Rick | Tulman | worker |
| 1 | Michael | Smith | mentor |
| 3 | Robert | Tyler | mentor |
| 11 | Thomas | Ziegler | mentor |
| 13 | John | Blake | mentor |
| 16 | Theresa | Markham | mentor |
+++++
18 rows in set (0.00 sec)
9.4
Создайте запрос к таблице
employee
для получения ID, имени и фами
лии сотрудника вместе с названиями отдела и отделения, к которым
он приписан. Не используйте соединение таблиц.
mysql>
Достарыңызбен бөлісу: