[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помощь для новичков
Страницы: 1, 2
Astin
Всем привет. В общем переодически обращаются за помощью новички по запросам, видимо какие то тесты проходят. Сейчас выложу пример задания и к нему запросы

И так имеем таблицы две, первая - отделы, вторая - сотрудники и руководители
Для теста

CREATE TABLE `department` (
`id` int(11) NOT NULL,
`name` varchar(200) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `department` (`id`, `name`) VALUES
(1, 'Разнорабочие'),
(
2, 'Менеджеры'),
(
3, 'Бухгалтерия'),
(
4, 'Руководители'),
(
5, 'Техподдержка'),
(
6, 'Кадры');



CREATE TABLE `employee` (
`id` int(11) NOT NULL,
`departmentId` int(11) NOT NULL,
`chiefId` int(11) DEFAULT NULL,
`name` varchar(200) NOT NULL,
`salary` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `employee` (`id`, `departmentId`, `chiefId`, `name`, `salary`) VALUES
(1, 5, 24, 'Работник 1', 37820),
(
2, 5, NULL, 'Работник 2', 14548),
(
3, 4, 32, 'Работник 3', 31035),
(
4, 2, NULL, 'Работник 4', 63726),
(
5, 4, NULL, 'Работник 5', 46477),
(
6, 1, NULL, 'Работник 6', 54531),
(
7, 2, NULL, 'Работник 7', 12797),
(
8, 5, NULL, 'Работник 8', 57358),
(
9, 2, NULL, 'Работник 9', 19638),
(
10, 2, NULL, 'Работник 10', 21897),
(
11, 4, NULL, 'Работник 11', 54294),
(
12, 3, NULL, 'Работник 12', 19519),
(
13, 4, NULL, 'Работник 13', 47218),
(
14, 1, NULL, 'Работник 14', 46473),
(
15, 5, NULL, 'Работник 15', 63014),
(
16, 6, NULL, 'Работник 16', 34016),
(
17, 2, NULL, 'Работник 17', 34183),
(
18, 4, NULL, 'Работник 18', 18331),
(
19, 5, NULL, 'Работник 19', 65649),
(
20, 4, NULL, 'Работник 20', 57348),
(
21, 5, NULL, 'Работник 21', 33770),
(
22, 5, NULL, 'Работник 22', 10497),
(
23, 5, NULL, 'Работник 23', 60513),
(
24, 4, NULL, 'Работник 24', 30280),
(
25, 2, NULL, 'Работник 25', 55692),
(
26, 2, NULL, 'Работник 26', 40635),
(
27, 2, NULL, 'Работник 27', 15839),
(
28, 3, NULL, 'Работник 28', 30223),
(
29, 5, NULL, 'Работник 29', 36690),
(
30, 2, NULL, 'Работник 30', 30108),
(
31, 3, NULL, 'Работник 31', 56839),
(
32, 4, NULL, 'Работник 32', 63970),
(
33, 3, NULL, 'Работник 33', 28888),
(
34, 4, NULL, 'Работник 34', 68130),
(
35, 5, NULL, 'Работник 35', 9486),
(
36, 1, NULL, 'Работник 36', 12065),
(
37, 3, NULL, 'Работник 37', 28868),
(
38, 5, NULL, 'Работник 38', 44911),
(
39, 4, NULL, 'Работник 39', 58499),
(
40, 5, NULL, 'Работник 40', 32285),
(
41, 5, NULL, 'Работник 41', 41919),
(
42, 3, NULL, 'Работник 42', 40896),
(
43, 3, NULL, 'Работник 43', 74759),
(
44, 1, NULL, 'Работник 44', 27362),
(
45, 3, NULL, 'Работник 45', 12043),
(
46, 2, NULL, 'Работник 46', 7567),
(
47, 3, NULL, 'Работник 47', 60379),
(
48, 5, NULL, 'Работник 48', 54106),
(
49, 1, NULL, 'Работник 49', 19598),
(
50, 5, NULL, 'Работник 50', 50405);


В поле chiefId стоит id руководителя

Задачи

1. Вывести список сотрудников в формате: Сотрудник, Отдел сотрудника, Руководитель, Отдел руководителя.

2. Вывести список сотрудников, получающих заработную плату, большую чем у непосредственного руководителя

3. Вывести список сотрудников, получающих максимальную заработную плату в своем отделе

4. Вывести список ID отделов, количество сотрудников в которых не превышает 3 человек

5. Вывести список сотрудников, не имеющих назначенного руководителя, работающего в том же отделе

6. Вывести список наименований отделов с максимальной суммарной зарплатой сотрудников

7. Вывести ФИО сотрудника(ов), получающего третью по величине зарплату в организации

Задача 1

$stmt = $pdo->prepare('SELECT s.name as sot, r.name as rabt,
ds.id as sdepid, ds.name as sdepname,
dr.id as rdepid, dr.name as rdepname
FROM employee s
LEFT JOIN employee r ON s.chiefId = r.id
LEFT JOIN department ds ON s.departmentId = ds.id
LEFT JOIN department dr ON r.departmentId = dr.id
ORDER BY s.id
'
);
$stmt->execute();

$res = $stmt->fetchAll();

echo '<pre>'; print_r($res); echo '</pre>';



Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.